可能性の重複:Windows 7のためのDelphi 7で書かれ
Delphi: Prompt for UAC elevation when neededDelphiの管理者権限D7 W7
私のアプリケーションは、いくつかの機能のために管理者権限が必要です。どうすれば管理者にソースコードからそれを上げることができますか?
私はこのコードでユーザー権限チェック:アプリケーションが管理者として起動した場合、それはTrueを返し、
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;
を。そうでない場合はFalseを返します。 結果がFalseの場合、自動的にプログラムを管理者に昇格させたいと思います。
私は管理者に昇格させてみましたが、アプリケーションを起動するとUACプロンプトが表示され、「いいえ」と答えるとアプリケーションはまったく実行されません。
お手伝いが必要ですか?
物理ドライブへのRAWアクセスの管理者権限が必要です。
EDIT:
Iはまた、( "このアプリケーションのUACを無効にする" ボタンを押した後)もコードからのみ、このアプリケーション(ParamStr(0))のためにUACを無効にしようとしました。
管理者権限を持つユーザーのみがアプリケーションを使用できますか?このようなアプリは、私のユーザベースで疫病を避けるために働いています。 UACに関する追加の注意点として、ユーザーがUACプロンプトを使用して昇格させることができない場合は、プロンプトに代替ユーザー名とパスワードで昇格させる必要があります。これはあなたの質問であなたが説明したセネリオではありません。 – edusysadmin
> "管理者権限を持つユーザーのみがアプリケーションを使用できますか?" いいえ、いくつかの危険な機能しかありません。このことについてユーザーに通知します。 – wcale
@wcale - あなたのプログラムがUACを回避し、管理者の範囲内で実行できる場合、UACは無意味でしょうか? – techie007