重複の可能性:
Delphi:必要に応じてUACの昇格を求める
Delphi 7 for 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が発生した場合、プログラムを自動的に管理者に昇格させたいと思います。
マニフェストを管理者に昇格させてみましたが、アプリケーションを起動するとUACプロンプトが表示され、「いいえ」と答えるとアプリケーションがまったく実行されません。
助けのチャンスはありますか?
物理ドライブにrawアクセスするには管理者権限が必要です。
編集:
また、コードからもこのアプリケーション(ParamStr(0))のUACのみを無効にしようとしました([このアプリケーションのUACを無効にする]ボタンを押した後)。