@Kvert007

Как установить привилегии на чтение памяти процесса(С++)?

Нужно получить доступ к запущеному процессу, чтобы узнать из какой директории он запустился.
DWORD PIDByName(WCHAR * AProcessName)
{
  HANDLE pHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  PROCESSENTRY32 ProcessEntry;
  DWORD pid;
  LPWSTR s=NULL;
  string str;
  TCHAR sttr[MAX_PATH];;
  ProcessEntry.dwSize = sizeof(ProcessEntry);
  bool Loop = Process32First(pHandle, &ProcessEntry);
 
  while (Loop)
    {
      if (wcsstr(ProcessEntry.szExeFile, AProcessName))
      {
          pid = ProcessEntry.th32ProcessID;
          CloseHandle(pHandle);
          return pid;
      }
      Loop = Process32Next(pHandle, &ProcessEntry);
    }
    return 0;
}
этой функцией получаю pid процесса.
if (processHandle != NULL) {
	  QueryFullProcessImageName(processHandle,0,ss,&pid);
	  GetProcessImageFileName(processHandle,ss,256);
	   
    if (GetModuleFileNameEx(processHandle, NULL, filename, sizeof(char)) == 0) {
		cout << GetLastError();
		cerr << "Failed to get module filename." << endl;
    } else {
      cout << "Module filename is: " << filename << endl;
    }
    CloseHandle(processHandle);
  } else {
    cerr << "Failed to open process." << endl;
  }
здесь хочу вынуть путь функциями QueryFullProcessImageName и GetProcessImageFileName, но выбрасывается "Необработанное исключение по адресу 0x77DD2373 (ntdll.dll) в RLE.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000000."
как я понимаю не хватает прав.
Пытаюсь назначить права этим:
SetPrivilege(HANDLE hToken,LPCTSTR Privilege,BOOL bEnablePrivilege);
подключив #pragma comment(lib, "Advapi32.lib").
Но такое ощущение что библиотека не линкуется, потому что выплевывает следующие:
Ошибка 10 error LNK1120: неразрешенных внешних элементов: 1
Ошибка 9 error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl SetPrivilege(void *,wchar_t const *,int)" (?SetPrivilege@@YAHPAXPB_WH@Z) в функции _main
Помогите пожалуйста!!!! Пишу в visual studio 2012
  • Вопрос задан
  • 2570 просмотров
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
А по моему вы просто пытаетесь работать с нулевым указателем. Укажите конкретную строчку, на которой выбрасывается исключение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы