Chciałem napisać prosty programik który zabija proces taskeng.exe
void *Snap;
PROCESSENTRY32 proces;
Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS , 0);
proces.dwSize = sizeof(PROCESSENTRY32);
if(Process32First(Snap , &proces))
{
do
{
if(strcmp(proces.szExeFile, "taskeng.exe") == 0)
{
HANDLE hProcess = OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE,
TRUE, proces.th32ProcessID);
if(hProcess == NULL) ErrorExit("OpenProcess");
TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
break;
}
}
while(Process32Next(Snap , &proces));
}
CloseHandle(Snap);
Jednak OpenProcess zwraca NULL, a GetLastError zwraca 5 - "Odmowa dostępu". Proces należy do mnie i mam prawa administratora. O co kaman ? Z managera zadań mogę bez problemu zabić ten proces. Pamiętam, że w XP spokojnie sie dało zabić w ten sposób proces. Czyżby Vista coś zmieniła ?