2012-01-10 8 views
1

現在のユーザーをログオフするには、どのPython関数を使用する必要がありますか。 は私が勝利+ Lを組み合わせPythonを使用したWindowsログオフ

ctypes.windll.user32.LockWorkStation()

のように、私のPCをロックしている例が見つかりましたが、私はログオフされます同様の機能を、必要とします。

+1

これでどうしようとしていますか?実行中にユーザーがログオフする可能性のある、本物で悪意のある理由はありませんか?あなただけがログオフしたい場合は、Windows-Lを押すことについて何が大変ですか?スクリプトを開始するのが簡単なのではない... –

+0

バックアップを実行したいが、その前にすべてのユーザーをログオフする必要があります – vpalade

+0

ユーザーに自分自身で行うように依頼する方が良いとは思いませんか? –

答えて

1

Try os.system("shutdown -l")

shutdown -lはだけは本当にSYSTEMユーザーとして実行されるサービスとして、あなたがこれを行うことができ、ログオフ

+0

それはおそらくプロセスであなたのスクリプトを終了するでしょう... –

+0

そして、それは価値があるため、 'os.system'は[もっと合理的な' subprocess'コマンドを尊重して)長年賛成していませんでした(http:// docs .python.org/library/subprocess.html#サブプロセス置換)。 –

0

のためのWindowsシェルコマンドです。実行中のユーザーからログオフしようとすると、スクリプトを終了します(これを達成する方法にかかわらず、ユーザー環境が終了すると現在のタスクは終了します)。

ただし、サービスとして機能するようにバックアップを書き込む場合は、すべてのユーザーセッションを終了するためにwin32api(pywin32経由)を使用できます(これは素晴らしいことではありませんが、バックアップを実行します。ユーザーがログインした場合には問題があります。ユーザーのログオンイベントをトラップする必要がありますが、それ以外の場合は比較的苦労しています。

0

これは、現在のユーザーがログアウトするようになります:

ctypes.windll.user32.ExitWindowsEx(0, 1) 

のctypesは問題なく、符号なし整数型にそれらのparamsを変換することができるはずです。それは引数の型に関するエラーをスローした場合、次のように0と1をラッピングしてみてください:ctypes.c_ulong(0)

はここに文書化:ExitWindowsEx

サイドノート:あなたはアクティブなユーザーをログアウトの練習をする場合は、ダイアログでそれらを求めることなく(たとえそれが60秒またはタイマーを持っていても)、彼らはおそらく非常に不幸になるでしょう。

関連する問題