Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Листинги / Листинги / 42-02-LookupPrivilegeName

.cpp
Скачиваний:
5
Добавлен:
24.03.2016
Размер:
2.04 Кб
Скачать
#include <windows.h>
#include <stdio.h>

int main()
{
  LUID  luId;                // локальный идентификатор для привилегии
  DWORD dwLength = 0;        // длина имени привилегии
  LPTSTR lpPrivName = NULL;  // адрес имени привилегии

  DWORD dwRetCode;           // код возврата

  // определяем локальный идентификатор привилегии
  if (!LookupPrivilegeValue(
    NULL,            // ищем привилегии на локальной машине
    SE_DEBUG_NAME,   // привилегия выполнять отладку процесса
    &luId))          // адрес локального идентификатора привилегии
  {
    dwRetCode = GetLastError();
    perror("Lookup privilege value failed.\n");
    printf("The last error code: %u\n", dwRetCode);

    return dwRetCode;
  }

  // распечатываем LUID
  printf("Luid of SE_DEBUG_NAME privilege. ");
  printf("High part: %x, Low part: %x\n", luId.HighPart, luId.LowPart);

  // определяем длину имени привилегии
  if (!LookupPrivilegeName(
    NULL,          // локальная машина
    &luId,         // адрес локального уникального идентификатора
    lpPrivName,    // адрес имени привилегии
    &dwLength))    // адрес длины буфера
  {
    dwRetCode = GetLastError();
    if (dwRetCode != ERROR_INSUFFICIENT_BUFFER)
    {
      perror("Lookup privilege name failed.\n");
      printf("The last error code: %u\n", dwRetCode);

      return dwRetCode;
    }

    // захватываем память для имени привилегии
    lpPrivName = new CHAR[dwLength + 1];
  }

  // определяем имя привилегии
  if (!LookupPrivilegeName(
    NULL,          // локальная машина
    &luId,         // адрес локального уникального идентификатора
    lpPrivName,    // адрес имени привилегии
    &dwLength))    // адрес длины буфера
  {
    dwRetCode = GetLastError();
    perror("Lookup privilege name failed.\n");
    printf("The last error code: %u\n", dwRetCode);

    return dwRetCode;
  }

  // распечатываем имя привилегии
  printf("Name of the Luid: %s\n", lpPrivName);

  delete[] lpPrivName;

  return 0;
}
Соседние файлы в папке Листинги