我正在创建一个应用程序来管理用户计算机上的其他应用程序或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;
}
答案 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