Windows7でDelphi7を使用しています。アプリケーションの一部の機能には管理者権限が必要です。これには、物理ドライブへのRAWアクセスが必要です。ソースコードから管理者に昇格するにはどうすればよいですか?IE私は権利をチェックします:
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プロンプトが表示されます。「いいえ」と答えると、アプリケーションはまったく実行されません。
編集:または、コードからもこのアプリケーション(ParamStr(0))のUACのみを無効にします([このアプリケーションのUACを無効にする]ボタンを押した後)