Я пытаюсь получить имя всех моих открытых процессов. Это то, что у меня есть:GetModuleFileNameEx, Access Denied Error
#include "stdafx.h"
#include <Psapi.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int iCmdShow)
{
bool _result;
DWORD *pProcessIds = new DWORD[1000];
DWORD cb;
DWORD pBytesReturned;
_result = EnumProcesses(pProcessIds, 1000, &pBytesReturned);
HANDLE hndProccesse;
for (int i = 0; i < pBytesReturned/sizeof(DWORD); ++i)
{
hndProccesse = OpenProcess(STANDARD_RIGHTS_ALL, false, *pProcessIds);
DWORD _len;
DWORD _len2 =0;
LPWSTR lpFilename = new WCHAR[100];
_len =GetModuleFileNameEx(hndProccesse,NULL, lpFilename, _len2);
DWORD _errr;
_errr = GetLastError();
MessageBox(NULL, lpFilename, NULL, 0);
CloseHandle(hndProccesse);
pProcessIds ++;
}
return 0;
}
Все работает отлично ДО GetModuleFileNameEx
, который давая ошибка доступа (5).
Кроме того, это, Что отображения в окне сообщения:
Есть идеи?
Как насчет того, чтобы попробовать вашу программу у администратора? –
'GetLastError' бессмысленно, если функция действительно не сработала. Кажется, вы не проверяете ошибку. –
@YoungHyunYoo Я попытался запустить VS в качестве администратора и все еще испытываю ту же ошибку. – Pedrumj