回答:
grawityの提案に従って、この回答の最後に付けたバッチファイルを使用しないでください。これは、Win32 API関数の呼び出し規則と一致rundll32.exe しないためLockWorkStationです(詳細については、このMSDNブログエントリを参照してください)。そうは言っても、より多くの作業を必要としない、より良い代替手段があります。
AutoItスクリプト言語とDllCall関数を使用して、呼び出しスタックを破損することなくWin32 API関数を呼び出すことができます。のProcessClose代わりにを使用することもできますTASKKILL。あなたの参考のために、ここにあるLockWorkStation MSDNからの参照。
次の2行をファイルに配置し、exitandlock.au3(または同様の)として保存します。AutoItで実行できます(または、必要に応じて.exeにコンパイルすることもできます)。
ProcessClose("yourapp.exe")
DllCall("user32.dll", "BOOL", "LockWorkStation")
これにより、呼び出しスタックが破損することなく、必要なものが提供されます。その後、そのファイルをホットキーにバインドし、それを使用してワークステーションをロックできます。または、それを.exeファイルにコンパイルし、コンピューターが非アクティブになった後にスケジュールされたタスクとして実行するように設定できます。
最後に、WinClose関数をの代替として使用することもできますProcessClose。
私が言ったように、このメソッドを使用しないでください。これはインターネット上で最も広く使用されている方法の1つであるため、完全を期してここに保管しています。TASKKILL次のコマンドを使用して、簡単なバッチファイルを使用してこれを行うことができます。
@ECHO OFF
TASKKILL /IM yourapp.exe
Rundll32.exe User32.dll,LockWorkStation
次に、ワークステーションをロックするときにバッチファイルを実行します。または、ホットキーを割り当ててバッチファイルを実行し、ロックするときにそのキーの組み合わせを押すこともできます。TASKKILLコマンドの詳細については、Microsoftのこの記事を参照してください。
taskkill送信するだけです。を使用しない限り、プロセスは終了しません/f。
terminate.vbs次の内容で名前が付けられたファイルを作成します。
set objwmiservice = getobject("winmgmts:\\.\root\cimv2")
strprocessname = wscript.arguments.item(0)
strquery = "select * from win32_process where name='" & strprocessname & "'"
set colitems = objwmiservice.execquery(strquery,,48)
for each objitem in colitems
objitem.terminate
next
このスクリプトをテストするには、コマンドプロンプトを開いてを実行しcscript.exe "C:\path\to\terminate.vbs" notepad.exeます。notepad.exe終了するプロセス名に置き換えます。
タスクスケジューラを開き([スタート]メニューで検索できます)、[ タスクスケジューラライブラリ ]を右クリックして[ タスクの作成... ] を選択します。で全般 ]タブ、タスクの名前と説明を与えます。あなたは変更することができます:のための設定をするのWindows 7は、Windows Server 2008 R2したい場合は、それは必要ありません。

上のトリガータブ、新しいトリガーを作成し、設定作業を開始します:にオンワークステーションロック。残りのデフォルト設定は問題ありません。

上のアクションタブ、新アクション作成プログラムを起動します。プログラム/スクリプト:cscript.exeである必要があります。[ 引数terminate.vbsの追加(オプション):]ボックスに、終了するパスとプロセス名を入力します。私の議論は"C:\Users\Public\Documents\terminate.vbs" notepad.exe

[ 条件]タブと[設定]タブでその他のオプションを確認できますが、ここではそれらのいずれも必要ありません。タスクを保存すれば完了です。画面をロックすると、プロセスは終了するはずです。
画面をロックしてからすぐにロックを解除すると、コマンドプロンプトウィンドウが表示されるか、終了するプロセスで終了するプロセスが表示される場合があります。これは、プロセスが正常に終了するまでの時間に依存します。
taskkillますか?