Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi】作成したEXEを強制的に管理者権限で実行させる

Delphi/400 10 Seattle以降では、VCLアプリケーション側で
「高DPI」と「管理者権限」の有効化がサポートされています。

プロジェクトメニューにあるオプションで「アプリケーション」の項目から、
マニフェストファイルの設定欄から有効にするだけで設定が可能です。

BDEを使用するアプリケーションや、
レジストリまたは「c:\Windows」「c:\Program Files (x86)」内のファイルを変更する
アプリケーションなどで管理者権限が必要になるため、要件に応じて設定して下さい。

「管理者権限の有効化」とは:
EXEをダブルクリックで実行する場合などで、
強制的に「管理者として実行」させることができます。
DelphiのIDE(統合開発環境)でデバッグを行う場合は、
デバッグを行うDelphi自身も管理者として起動しておく必要があります。

 
10.2以降は使用できる設定値が増えています。

  • 10 Seattle:
    • 「管理者権限の有効化」
      チェックをオンにすると、アプリケーションは管理者権限で実行しなければなりません。
      管理者権限のないユーザーでアプリケーションを実行しようとすると、システムから認証情報が求められます。
  • 10.2 Tokyo 以降:「実行レベル」として、以下の3項目から選択式になっています。
    • [インボーカとして]:(※初期値)
      このオプションを選択すると、アプリケーションを親プロセスと同じアクセストークンで実行します。
    • [使用可(最高)]:
      現在のユーザーが取得できるうち、もっとも高い権限で実行します。
    • [管理者権限が必要]:
      管理者権限が必要な場合に、このオプションを選択します。
      管理者権限のないユーザーでアプリケーションを実行しようとすると、システムから認証情報が求められます。
       

 
Delphi/400 XE7以前で作成時など、何らかの理由で管理者権限を強制させたい場合は、
Delphi側で設定する方法が無いため、以下の方法で設定します。

エクスプローラーで対象のEXEのプロパティを表示し、
「互換性」タブから「管理者としてこのプログラムを実行する」を有効にします。

※上記の「互換性」のタブの設定値はレジストリに保管されますが、
 EXEのフルパスを使用するため、EXEの場所が変わると再設定が必要になります。

 

 

※「高DPIの有効化」については、こちらの過去のTipsをご参照ください。
【Delphi】高DPIの有効化設定と個別スケーリング手順