2013年4月27日 星期六

用VC++提高Windows程式的執行權限

是否有在Win8或Win7上執行程式發生權限不足的狀態?
當在Windows上執行程式時發生權限不足,這時就需要將程式執行權限提高至管理者權限。
BOOL EnablePrivilege()
{
 BOOL bRet = FALSE;
 HANDLE hToken = NULL;
 TOKEN_PRIVILEGES tp;

 tp.PrivilegeCount = 1;  
 tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

 if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) //開啟程式調整權限
 {
  if (LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid)) //查詢是否可調整權限
  {
   AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL); //為程式提高 DEBUG 權限
   bRet= (GetLastError() ==  ERROR_SUCCESS);
  }       
 }
 if(hToken) CloseHandle(hToken);//確認是否執行成功
 return bRet;
}


沒有留言:

張貼留言