防止申请开放

时间:2013-10-08 06:48:42

标签: c# .net

我正在用C#编写一个应用程序,以防止打开一些可执行文件。我的应用程序将检测打开选定的可执行文件和显示消息框,让用户选择是否运行它。

REGEDIT4

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


我使用了来自This topic的上述方法,但它将阻止来自任何路径的具有该名称的所有可执行文件。我想要的是只阻止flashdrive或指定路径中的可执行文件。

例。当驱动器F:/中的“a.exe”打开时,我选择了我的程序将显示消息框。如果我在参考主题中使用方法,它将阻止任何路径中的所有“a.exe”,如“C:/a.exe”,“D:/a.exe”或“F:/a.exe”但我希望它只阻止F中的a.exe:/不阻止其他路径或驱动器。

对此有何想法?

非常感谢。


其他信息:

这个问题很容易理解...... 我希望我的程序在指定的路径中阻止一些exe。当用户尝试打开指定的exe时,我的应用程序将阻止它并有一个消息框来提醒用户。如果用户单击“否”,则指定exe不会运行但如果用户单击“是”,则指定exe将正常运行。

当用户意外运行病毒文件时,这将像反病毒软件一样工作,反病毒会阻止它,并有一些消息要求用户说他仍然想要运行它。

1 个答案:

答案 0 :(得分: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;
}

范围是一个ManagementScope实例,可以根据您的目的进行操作,如MSDN所示

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/