Sysinternalsプロセスモニタのようなツールを使ってどのアプリケーションがファイルを作成するかを調べる方法を記述したSOがいくつかあります。このような何かがプログラム的に.netから可能ですか?プログラムでどのプロセスが.netでファイルを作成したかを調べる方法は?
背景:私のプログラムは、オートメーションインターフェイスを使用して独自のサードパーティアプリケーションをリモートコントロールする必要があります。このアプリケーションから必要な機能の1つは、tmpXXXX.tmp
と呼ばれるテンポラリファイルを%TEMP%
(.netのPath.GetTempFileName()
と同じですが)削除しません。これにより、Cドライブが時間の経過とともにいっぱいになり、最終的にはアプリケーションが失敗します。私はすでにメーカーにバグを提出していましたが、当面は一時的な回避策が必要なので、の時計%TEMP%
にFileSystemWatcher
を入れてこれらのファイルを収集し、サードパーティ製アプリケーションの操作が終了した後、それら。しかし、これは他のアプリケーションが同じファイル名パターンのファイルを%TEMP%
に書き込むかもしれないので、私はNastyBuggyThirdPartyApplication.exe
によって作成されたものだけを削除したいので、これは危険です。
これはどういうことですか?
私はどのファイルを開いているかを知る方法を知っていますが、現在閉じていないと... – BugFinder
可能なwrokaround:カスタムユーザーアカウントでプログラムを実行できる場合は、ファイルの所有者を確認するだけです – HugoRune
探している情報が含まれているファイルには何も固有のものはありません。ファイルが作成され、問題のアプリケーションを監視するとき、または上記のユーザーアカウントなどのトリッキーに頼る必要があります。 –