不,但有一個解決方法。
UAC關閉了而不是排除了以管理員身份運行應用程序(假設您有一個管理員密碼,因爲它看起來像你),只是讓它更難。正如你理所當然地指出,與UAC的殘疾人,並在清單中,右鍵單擊requireAdministrator
集並選擇Run as administrator
實際上並沒有提升的過程中,微軟表示:「Application might launch but will fail later」
兩個步驟:
1)保持Shift並右鍵單擊應用程序並選擇Run as a different user
。然後只需使用您的管理員用戶名和密碼進行身份驗證,並且您的應用程序應以管理員身份運行。它爲我工作。
2)結構在運行asInvoker
並檢查管理權限一個小的可執行文件。在沒有它們的情況下運行時,警告用戶,並告訴他們按Shift-Right Click,然後Run as a different user
。如果您的小程序具有管理員權限,請使用ShellExecute
來調用您的主requireAdministrator
應用程序。有關流程圖,請參見Figure 9 here。你基本上用你自己的UAC對話框替換,因爲UAC是關閉的。
這裏是在計算器上從某處C++小的代碼示例,檢查管理員訪問:
BOOL IsUserAdmin(VOID)
{
BOOL b;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
b = AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup);
if(true==b)
{
if (!CheckTokenMembership(NULL, AdministratorsGroup, &b))
{
b = FALSE;
}
FreeSid(AdministratorsGroup);
}
return(b);
}
所以用戶不是本地管理員,但是當UAC開啓時,用戶將輸入與管理的一些其他憑證UAC提示中的權利? –
[同樣的問題,基本上,之前已經問過。](http://stackoverflow.com/questions/90702/how-does-a-program-ask-for-administrator-privileges) –
不,它沒有回答那裏。我已經在那裏說了什麼。問題是解決方案不能始終工作。這是一個問題。 –