ショートカットで Windows をロックする

SOFTWARE REPORT


コンピュータのパスワードロック

Microsoft Windows NT 4.0 以降では、ワークステーション(コンピュータ)のロック機能によって、本人または管理者がパスワードを入力しなければ、PC を操作できないようにすることができるようになっています。

通常は、Ctrl+Alt+Del を押して、現れたダイアログボックスから "ワークステーションをロック" または "コンピュータをロック" ボタンを押す事でロックをかける事が可能ですけど、以下では他の方法も紹介してみようと思います。

 

コマンドラインからワークステーションをロックする

コマンドラインからワークステーションをロックするには、以下の命令を実行します。

%windir%\System32\rundll32.exe user32.dll,LockWorkStation

このようにすることで、"user32.dll" 内の LockWorkStation API が呼び出され、ワークステーションをロック状態にすることが出来ます。

 

ワークステーションをロックするためのショートカットを作成

上記の命令をショートカットに登録すれば、ショートカットの実行によってワークステーションをロックすることも可能です。

ショートカットを作成したいフォルダ上で 右クリック し、"新規作成" から "ショートカットの作成" を選択します。すると、ショートカットの作成ウィザードが起動するので、"項目の場所を入力してください" のところに、ワークステーションのロックを行うためのコマンド "%windir%\System32\rundll32.exe user32.dll,LockWorkStation" を入力します。

あとは、【次へ】進み、このショートカットに名前をつければ完成です。

 

ログオン時にワークステーションを自動ロックする

前述の ワークステーションをロックするためのショートカットを "スタートアップ" に作成することによって、Windows へログオン直後に、ワークステーションをロックする事が可能です。

ワークステーションロック用のショートカットを作成したら、【スタート】メニューで右クリックして "開く" を選択します。そこからさらに "プログラム" → "スタートアップ" とフォルダを辿って、その中に先ほど作成したショートカットをコピーすれば、ログオン直後に自動的にワークステーションがロックされるようになります。

Windows サービスに対応していないプログラムなどを、Windows 起動時に自動的にログオンする のと併せて稼動させたい場合などに活用できると思います。

 

Win32 API を用いてワークステーションをロックする (C++)

Windows 2000 以上の Win32 API には "LockWorkStation" という、ワークステーションのロックを行う API が用意されています。これを呼び出す事で簡単に、アプリケーションからもワークステーションのロックを行う事が可能です。

WINUSERAPI BOOL WINAPI LockWorkStation(VOID);

ワークステーションのロックに成功した場合、戻り値として 0 以外 (TRUE) を返します。失敗した場合は 0 (FALSE) を返します。失敗する理由としては、ワークステーションが既にロックされていることなどが挙げられるとのことでした。

この API を Microsoft Visual C++ で使用するためには、ヘッダとして "winuser.h" をインクルードし、ライブラリとして "user32.lib" をリンクする必要があります。ヘッダをインクルードする前に、プリプロセッサを用いて _WIN32_WINNT に 0x0500 以上の値を宣言しておかないと、LockWorkStation 関数が宣言されない点も気をつけましょう。

 

この API を用いて Microsoft Visual C++ 8.0 でワークステーションのロックを行う場合は、次のような感じになります。

#define _WIN32_WINNT 0x0500

#include "winuser.h"

 

if (LockWorkStation() == FALSE)

{

    // ワークステーションのロックに失敗

}