使用CreateToolhelp32Snapshot()对正在运行的进程进行快照时,权限被拒绝
Permission denied while taking a snapshot of running process using CreateToolhelp32Snapshot()
今天我被要求把我的控制台应用程序(例如:app .exe)变成一个服务,只是谷歌和发现nssm然后使用其有效的命令把我的app .exe变成一个服务,我的下一个工作是监控运行过程(app .exe),如果它的大小超过>30MB重启它,这就是全部。我以前从nssm中学到的是,当我杀死app .exe nssm自动重新启动它时,所以现在我只需要为监控和杀死app .exe编写代码,当它超过30MB时,最后我创建了一个应用程序来监控问题出现了,在监控应用程序中,我一直使用CreateToolhelp32Snapshot()
拍摄所有运行进程的快照,并尝试通过其名称找到我的app .exe,然后通过pmc.WorkingSetSize
获得它的大小,然而,当我运行监控应用程序时,它找不到app . exe,尽管我看到它存在于任务管理器中,我甚至以管理员身份运行它,但它仍然是一样的,任何人都可以帮助我摆脱这个问题。
我在拍摄快照时得到的错误是permission denied.
请参阅下面我的代码:
int main()
{
LOG mon;
PROCESSENTRY32 pe32 = {0};
HANDLE hSnap;
HANDLE hprocess;
PROCESS_MEMORY_COUNTERS pmc;
int iDone;
int iTime = 60;
bool bProcessFound;
while(true) // go forever
{
cout<<"adjfhaljkehdfhwoefjiej";
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe32.dwSize = sizeof(PROCESSENTRY32);
Process32First(hSnap,&pe32); // Can throw away, never an actual app
bProcessFound = false; //init values
iDone = 1;
while(iDone) // go until out of Processes
{
iDone = Process32Next(hSnap,&pe32);
if (strcmp(pe32.szExeFile,"APP.exe") == 0) // Did we find our process?
{
DWORD processID = pe32.th32ProcessID;
hprocess= OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
if (GetProcessMemoryInfo( hprocess, &pmc, sizeof(pmc)))
{
size_t procsize=pmc.WorkingSetSize;
cout<<procsize;
if(procsize>30MB)--mylogic
{
hprocess=OpenProcess(PROCESS_TERMINATE,0, processID);
TerminateProcess (hprocess, 0);
mon.RestartLog("Server Closed due to large size");
}
}
bProcessFound = true;
iDone = 0;
}
}
if(!bProcessFound) .
{
mon.RestartLog("Server Down ");
}
Sleep(iTime*50); // delay x amount of seconds.
}
return 0;
}
将上述监视器应用程序作为系统进程运行。也就是说,让它成为一个服务。
相关文章:
- 访问被拒绝后,c++中的故障保护代码
- IpOpt拒绝解决不受约束的问题
- Termux权限被拒绝
- AWS Lambda C++运行时权限被拒绝
- WinSock2:connect() 提供"连接被拒绝"
- 为什么 KMS drmModeSetCrtc() 在 X11 会话中运行时会失败并被拒绝权限?
- 删除目录函数访问被拒绝
- 模板签名解析为 void(void) 被 GCC 拒绝;这是否有效C++?
- 为什么 Windows 拒绝访问某些进程的名称?
- std::stoi 的版本拒绝任何非数字
- 我在执行任何程序时被拒绝在 devcpp 中访问
- Windows C++:文件夹移动访问被拒绝错误
- AWS AMI 中的 Windows DPAPI 失败,访问被拒绝
- 使用崇高文本 3 进行C++拒绝授予权限?
- C++ 17 文件系统copy_file访问被拒绝
- Clang拒绝类模板的嵌套类仅通过专门化定义的代码是正确的吗
- 拒绝包含某些公共静态数据成员的类型
- 为什么mysql拒绝本地连接
- 安卓inotify_add_watch失败:权限被拒绝?
- 使用CreateToolhelp32Snapshot()对正在运行的进程进行快照时,权限被拒绝