2

Delphi で作成された 2 つのアプリケーションがあります。最初の exe (ユーザー インターフェイスを含む) は、バックグラウンド プロセスとして実行される ShellExecuteEx() を使用して別の exe を呼び出します。

最初の exe が 2 番目の exe を呼び出すと、次の 2 つのいずれかが発生します。

  1. 管理者としてログインすると、UAC ダイアログに許可/キャンセルのプロンプトが表示されます。[許可] を選択すると、実行が続行されます。

  2. 非管理者としてログインすると、管理者の資格情報ダイアログ ボックスが表示され、続行するには管理者のユーザー名とパスワードを入力する必要があります。

どちらの場合も、ユーザーの介入なしで 2 番目の exe を実行したいと考えています。どうすればそれを可能にできますか?

はい、SUA ツールで提案されている ElevateCreateProcess 軽減策を適用してみましたが、うまくいかないようです。動作は以前と同じです。

ご協力いただきありがとうございます。

4

3 に答える 3

1

2 番目のファイルのファイル名は何ですか?

Vista では、特定のファイル名に管理者権限が必要であると想定しています。最も顕著なのは、"setup" または "install" という名前のファイルです。

また、Vista に UAC プロンプトを表示させずに、管理者権限でプログラムを実行できるようにしたい場合は、運が悪いです。もしそれが可能であれば、それは重大なセキュリティ違反になります。

2 番目のプログラムには管理者権限が必要ですか?

2 つ目のプログラムをエクスプローラーから直接実行しようとするとどうなりますか? UACプロンプト?その場合、Vista は、ファイルのファイル名、またはマニフェスト (内部または外部) 要求が原因で、管理者として実行しようとしています。

于 2009-06-18T20:19:31.200 に答える
1

UAC プロンプトなしで 2 つ目の EXE を起動するには、最初の EXE を昇格した権限で起動する必要があります。または... 2 番目の EXE のマニフェストを使用して、それが管理ツールではなく、現在のユーザーとして実行することを Vista に伝えることができます。

Second.exe.manifest として保存

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<!-- Vista UAC Support -->
<ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2">
  <ms_asmv2:security>
    <ms_asmv2:requestedPrivileges>
      <ms_asmv2:requestedExecutionLevel level="asInvoker" />
    </ms_asmv2:requestedPrivileges>
  </ms_asmv2:security>
</ms_asmv2:trustInfo>
</assembly>
于 2009-06-18T17:33:01.997 に答える
0

はい、次のようなアプリケーション マニフェストが必要です。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>   

    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="UacTest"   type="win32"/>   
       <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">   
       <security>  
          <requestedPrivileges>  
             <requestedExecutionLevel level="highestAvailable"/>    
          </requestedPrivileges>  
       </security>  
    </trustInfo>  
  </assembly> 

「requestedExecutionLevel」タグに注意してください

于 2009-06-18T17:33:46.940 に答える