3

WinXPが現在のWindowsバージョンであったとき、私は少し前にビデオゲームを開発しました。まだ存在していない場合、ゲームは独自のフォントをシステムにインストールする必要がありました。コードでそれをどのように正確に行ったかは覚えていません。特定のWinAPI関数を使用したか、フォントファイルをFontsフォルダーにコピーしただけだと思います。どちらにしても、その時点では問題なく機能していました。

ただし、誰かがWin7でゲームを実行すると、ユーザーが管理者として実行しない限り、ゲームはフォントをインストールできません。ゲームは動作しますが、代わりに恐ろしいデフォルトフォントを使用するため、ユーザーは何かが間違っていることに気付かず、ゲームがひどいように見えると思います。

したがって、必要なのは、exeファイルを常に管理者として実行するように要求することです。ゲームを再コンパイルしてビルドをセットアップし、exeファイルが常に管理者権限を要求するようにすることはできますが、使用したSDKの一部がないため、再構築はおそらくやや困難です。

だから私がやりたいのは、ソースコードなしで.exeファイルをなんらかの方法で変更して、常に管理者として実行する必要があるようにすることはできますか?

これをマニフェストに入れる必要があることがわかりました。

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

しかし、exeファイルのマニフェストを編集できますか?リソースを操作していたXNResourceEditorを試しましたが、マニフェストを編集できないようです。

これを行うことは可能ですか?

ありがとう。

4

1 に答える 1

5

マニフェストを外部XMLファイルとして作成し、実行可能ファイルと同じフォルダーに配置できます。名前YourAppName.exe.manifestを付けます(もちろん、明白なものを実際の実行可能ファイルの名前に置き換えます)。これは、埋め込みリソースと同じように機能するはずです。

外部ファイルの例:

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

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    type="win32"
    name="YourApplication"
    version="1.0.0.0"
    processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
于 2012-07-24T18:17:39.580 に答える