2011-01-12 16 views
3

をwindowsディレクトリを削除します。
DirectoryInfo.Delete(True) Doesn't Delete When Folder Structure is Open in Windows Explorerフォースが可能な重複のpythonから

人々を、私はプロジェクトのPythonのテストハーネスと一部のアプリケーションをアンインストールしてから、すべてのそれを再インストールすることを伴う書いています夜。アンインストールタスクの一部には、データディレクトリの削除が含まれます。テスター/開発者はコンピュータにログインし、コマンドプロンプトやログファイルを開いたままにすることがあります。これは、別のプロセスがハンドルを持っている場合、ウィンドウがファイルを削除させないので、スクリプトが失敗する原因になります。

ファイルを保持しているプロセスのpidを取得することができるかどうかを知りたいので、WMIなどのプロセスを終了できますか?私は人々をログアウトせずにこれをしたいと思います。

もし私のスクリプトが表示され、プロセス/ログアウトユーザーを待つことなく作業を続けることができるシステムを得るために、すべてのユーザーのログアウトを強制する方法はありますか?

すべての提案は大歓迎です。私は経験豊富なWindowsプログラマーではない。

答えて

1

だから、sysinternalsが解決策を提供するようです。

handle.exeジョブを実行します。

システムコール(たとえばpythonのサブプロセスモジュール)を実行し、削除しようとしているディレクトリの出力を検索します。 pidを取得し、psKill.exeへの別のシステムコールでプロセスを終了します。

私はまだコードを書いていませんが、私はコマンドのような手順を踏んだり動作します。 psToolsへのシステムコールを行うプログラミング言語でこれを記述するのは簡単です。

+0

私は '解決策'と言いたいと思います。より良い方法があるかもしれませんが、私のプロジェクトではこの方法が有効です。 – user573225

+0

これは、ctypesとpy2exeを使って[OpenedFileFinder] [1]ツールを書き換えるよりも優れていると思います。 [1]:http://www.codeproject.com/KB/shell/OpenedFileFinder.aspx – cgohlke