停止运行exe文件C ++

时间:2017-02-21 22:22:20

标签: c++ winapi

我正在创建一个应用程序来管理用户计算机上的其他应用程序或exe文件,并阻止他们在特定时间访问它们(如ColdTurkey的应用程序阻止功能)。

我尝试这样做的方式到目前为止还没有开始 - 我试图通过使用 CreateFile 函数打开文件 dwShareMode 设置为0来实现此目的。这似乎适用于文本文件等文件,并且不允许打开文件,但是如果我尝试在exe文件上执行相同的方法,并且用户可以自由打开文件,则情况并非如此。

我认为exe文件不会被读取'以同样的方式,Windows作为文本文件由记事本读取,这意味着将dwShareMode设置为0不会影响它被打开,但我不知道它们之间有什么区别。任何帮助将不胜感激。

这里的代码(对于文本文件):

#include <windows.h>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    HANDLE test;
    test = CreateFile("test.txt",
         GENERIC_WRITE,
         0,
         NULL,
         CREATE_NEW,
         FILE_ATTRIBUTE_NORMAL,
         NULL);

    cout << "press enter to stop blocking application: ";
    string b;
    getline(cin, b); 
    cout << endl;
    CloseHandle(test);
    return 0;
}

2 个答案:

答案 0 :(得分:2)

您的代码可以阻止我执行该文件。您需要指定OPEN_EXISTING而不是CREATE_NEW(因为您不是在这里尝试创建新文件)。

答案 1 :(得分:-1)

不是Windows专家 - 我习惯使用Unix / Linux并使用Cygwin软件包,因此我可以在Windows桌面上“在Unix中”编程 - 但在我看来,你需要设置lpSecurityAttributes参数, 之后 dwShareMode。

我认为以下页面可能会有所帮助: https://msdn.microsoft.com/en-us/library/windows/desktop/aa364399(v=vs.85).aspx