龍子 发表于 2018-6-18 07:22:04

【API】Windows 程序提升权限函数

BOOL EnableShutdownPrivilege()  {
  HANDLE hProcess = NULL;
  HANDLE hToken = NULL;
  LUID uID = {0};
  TOKEN_PRIVILEGES stToken_Privileges = {0};
  hProcess = ::GetCurrentProcess(); //获取当前应用程序进程句柄
  if(!::OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken)) //打开当前进程的访问令牌句柄(OpenProcessToken函数调用失败返回值为零)
  {
  return FALSE;
  }
  if(!::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&uID)) //获取权限名称为"SeShutdownPrivilege"的LUID(LookupPrivilegeValue函数调用失败返回值为零)
  {
  return FALSE;
  }
  stToken_Privileges.PrivilegeCount = 1; //欲调整的权限个数
  stToken_Privileges.Privileges.Luid = uID; //权限的LUID
  stToken_Privileges.Privileges.Attributes = SE_PRIVILEGE_ENABLED; //权限的属性,SE_PRIVILEGE_ENABLED为使能该权限
  if(!::AdjustTokenPrivileges(hToken,FALSE,&stToken_Privileges,sizeof stToken_Privileges,NULL,NULL)) //调整访问令牌里的指定权限(AdjustTokenPrivileges函数调用失败返回值为零)
  {
  return FALSE;
  }
  if(::GetLastError() != ERROR_SUCCESS) //查看权限是否调整成功
  {
  return FALSE;
  }
  ::CloseHandle(hToken);
  return TRUE;
  }
页: [1]
查看完整版本: 【API】Windows 程序提升权限函数