可能重複:
Delphi: Prompt for UAC elevation when needed德爾福管理員權限D7 W7
我在Delphi編寫7的Windows 7應用程序的某些功能需要管理員權限。我怎樣才能從源代碼升級到管理員?
我檢查用戶權限,此代碼:
function IsUserAdmin : boolean;
const CAdminSia : TSidIdentifierAuthority = (value: (0, 0, 0, 0, 0, 5));
var sid : PSid;
ctm : function (token: dword; sid: pointer; var isMember: bool) : bool; stdcall;
b1 : bool;
begin
result := false;
ctm := GetProcAddress(LoadLibrary('advapi32.dll'), 'CheckTokenMembership');
if (@ctm <> nil) and AllocateAndInitializeSid(CAdminSia, 2, $20, $220, 0, 0, 0, 0, 0, 0, sid) then
begin
result := ctm(0, sid, b1) and b1;
FreeSid(sid);
end;
end;
如果應用程序開始以管理員身份,然後返回true;如果不是,則爲False。 現在,如果我有False因爲我想自動將程序升級到管理員。
我嘗試使用manifest升級到管理員,但是如果我啓動應用程序,那麼我會看到一個UAC提示,如果我回答「否」,那麼應用程序將不會運行。
有沒有機會尋求幫助?
我需要管理員權限才能訪問物理驅動器。
編輯:
我也試圖禁用UAC僅用於該應用(ParamStr這(0))也從代碼(按壓後「禁用UAC用於該應用」按鈕)。
那麼只有擁有管理權限的用戶才能使用您的應用程序?它的應用程序如此我與我的用戶羣一起工作,以避免瘟疫。 有關UAC的其他說明,如果用戶無法通過UAC提示進行提升,提示必須提示用戶使用備用用戶名和密碼進行提升。這不是你在問題中解釋過的senerio。 – edusysadmin
>「那麼只有擁有管理權限的用戶才能使用您的應用程序?」 不,只有一些危險的功能,我會通知用戶關於這個 – wcale
@wcale - 如果你的程序可以繞過UAC並使其在管理員範圍內運行,UAC將是毫無意義的沒有? – techie007