OpenProcess为何返回0
OpenProcess为什么返回0
XP系统,VC208。双击打开我的电脑,然后运行下面的代码
------解决思路----------------------
提权,刚刚在别的帖子看到的代码
XP系统,VC208。双击打开我的电脑,然后运行下面的代码
#include<iostream>
using namespace std;
#include<windows.h>
#include<winnt.h>
void main()
{
HWND h = FindWindow(L"CabinetWClass",L"我的电脑");
DWORD d;
GetWindowThreadProcessId(h,&d);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,0,d);//这里为什么返回0
TerminateProcess(hProcess,0);
}
------解决思路----------------------
提权,刚刚在别的帖子看到的代码
bool AdjustPrivileges() {
HANDLE hToken;
TOKEN_PRIVILEGES tp;
TOKEN_PRIVILEGES oldtp;
DWORD dwSize=sizeof(TOKEN_PRIVILEGES);
LUID luid;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
------解决思路----------------------
TOKEN_QUERY, &hToken)) {
if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED) return true;
else return false;
}
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {
CloseHandle(hToken);
return false;
}
ZeroMemory(&tp, sizeof(tp));
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=luid;
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
/* Adjust Token Privileges */
if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {
CloseHandle(hToken);
return false;
}
// close handles
CloseHandle(hToken);
return true;
}