web-dev-qa-db-ja.com

標準ユーザーがUAC昇格を必要とするプログラムを実行できるようにする

UACの昇格を必要とするアプリケーション(Fallout Mod Manager)を実行するには、標準または制限付きのWindows7ユーザーが必要です。 Application Compatibilty Toolkitを試しましたが、意図したとおりに機能しませんでした。助言がありますか? Windows 7 Ultimateローカルを実行しているので、ポリシーを適用できます。

基本的にunixのsetuidフラグのようなものが欲しいです。

4
Thom Wiggers

それは実行可能ですが、説明するのは簡単ではありません。

アプリケーションが起動時に昇格を要求する理由は3つだけです。

  • 互換性タブには「このプログラムを管理者として実行する」があります
  • アプリケーションには、requireAdministratorを指定したマニフェスト(埋め込みまたは外部)があります
  • 必要な管理者としてマークしたMicrosoftからの互換性アップデートがあります

互換性タブをすでにチェックしていて、アプリケーションがnot管理者を要求するように設定されていると仮定します。

enter image description here

次のステップは、埋め込まれたリソースマニフェストを確認することです。私はあなたがそれを見つける方法には立ち入りません。ただし、スキップして自分用のマニフェストを作成してください。

Fallout Mod Managerと同じディレクトリにファイルを作成します(exeの名前はわかりませんが、FalloutModManager.exeと呼びます:

FalloutModManager.exe FalloutModManager.exe.manifest

作成するこの新しいmanifestファイルは、xmlを含む単純なテキストファイルであり、起動することを示すマニフェストエントリがありますrequireAdministratorではなくasInvoker

FalloutModManager.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0"> 
      <assemblyIdentity 
           version="1.0.0.0"
           processorArchitecture="X86"
           name="client"
           type="win32" /> 

      <description>Poorly written Fallout Mod Manager fails on XP as standard user</description> 

      <!-- Disable file and registry virtualization, and don't require elevation -->
      <trustInfo xmlns="urn:schemas-Microsoft-com:asm.v2">
         <security>
            <requestedPrivileges>
               <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
            </requestedPrivileges>
         </security>
      </trustInfo>
</Assembly>

このファイルの隣に置くと、実行可能ファイルは「外部マニフェスト」と呼ばれます。 。実行可能ファイルにリソースが埋め込まれている可能性もあります。リソースを表示または変更するには、ResourceHackerなどのツールが必要です。

3
Ian Boyd