3

一部の実行可能ファイルが開かないようにするために、C# でアプリを作成しています。私のアプリは、選択された実行可能ファイルを開くことを検出し、メッセージ ボックスを表示して、ユーザーが実行するかどうかを選択できるようにします。

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"Debugger"="calc.exe"


このトピック の上記の方法を使用しましたが、その名前のすべての実行可能ファイルを任意のパスからブロックします。私が望むのは、フラッシュドライブまたは指定されたパスの実行可能ファイルのみをブロックすることです。

例。ドライブ F:/ の「a.exe」が開いているときにプログラムがメッセージ ボックスを表示するように選択しました。参照トピックのメソッドを使用すると、「C:/a.exe」、「D:/a.exe」、「F:/a.exe」などのパスのすべての「a.exe」がブロックされますが、他のパスやドライブではなく、F:/ の a.exe のみをブロックしたい。

これについて何か考えはありますか?

どうもありがとう。


追加情報:

この質問を理解しやすいのは... 指定したパスの一部のexeをプログラムでブロックしたいです。ユーザーが指定されたexeを開こうとすると、アプリはそれをブロックし、ユーザーに警告するメッセージボックスを表示します。ユーザーが「いいえ」をクリックすると、exe が実行されないことを指定しますが、ユーザーが「はい」をクリックすると、exe が正常に実行されることを指定します。

これは、ユーザーが誤ってウイルス ファイルを実行した場合にアンチ ウイルス ソフトウェアのように機能し、アンチ ウイルスはそれをブロックし、実行するかどうかをユーザーに尋ねるメッセージを表示します。

4

1 に答える 1

2

プロセス インスタンスの作成と破棄を検出しようとするブログ記事にも同様のポイントがあります。このために私は使用ManagementEventWatcherし、このクラスは次のようなクエリを使用します

internal ManagementEventWatcher WatchForProcessStart(string ProcessName)
{
    string Query = "SELECT TargetInstance" +
        " FROM __InstanceCreationEvent " + "WITHIN  2 " +
        " WHERE TargetInstance ISA 'Win32_Process' " +
        " AND TargetInstance.Name = '" + ProcessName + "'";
    string Scope = "\\\\.\\root\\CIMV2";
    ManagementEventWatcher Watcher = new ManagementEventWatcher(Scope, Query);
    Watcher.Start();
    return Watcher;
}

スコープは、ManagementScopeMSDN で見られるように、目的のために操作できるインスタンスです

ManagementScope scope = 
        new ManagementScope(
        "\\\\FullComputerName\\root\\cimv2");
scope.Connect();

これが少し役立つことを願っています。詳しくは

http://msdn.microsoft.com/en-us/library/system.management.managementscope.aspx

http://www.idipous.net/how-to-monitor-proccess-creation-with-c/

于 2013-10-08T06:57:05.197 に答える