【问题标题】:How to modify an exe file to force it to Start as Administrator without source code如何修改exe文件以强制它以管理员身份启动而无需源代码
【发布时间】:2012-07-23 02:49:52
【问题描述】:

前段时间我开发了一个视频游戏,当时 WinXP 是当前的 Windows 版本。游戏需要在系统中安装自己的字体,如果它不存在的话。我不记得我在代码中到底是怎么做的,我想我要么使用了特定的 WinAPI 函数,要么只是将字体文件复制到了 Fonts 文件夹中——无论哪种方式,当时它都可以正常工作。

但是,现在当有人在Win7上运行游戏时,除非用户以管理员身份运行,否则游戏无法安装字体。游戏可以运行,但使用了可怕的默认字体,因此用户甚至没有意识到有什么问题,只是认为游戏看起来很糟糕。

所以我需要的是让 exe 文件始终要求以管理员身份运行。我可以重新编译游戏并设置构建,以便 exe 文件始终需要管理员权限,但我没有一些我已经使用过的 SDK,因此重建可能会有些困难。

所以我想做的是:我可以简单地以某种方式修改 .exe 文件,而不需要源代码,以便它始终要求以管理员身份运行吗?

我发现我需要把它放在清单中:

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

但是我可以编辑 exe 文件的清单吗?我曾尝试使用 XN 资源编辑器来处理资源,但它似乎无法编辑清单。

可以这样做吗?

谢谢。

【问题讨论】:

    标签: windows manifest administrator


    【解决方案1】:

    您可以将清单创建为外部 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>
    

    【讨论】:

    • 出于某种原因,在我的情况下,简单地将清单文件放在同一个文件夹中是行不通的。但是,我注意到当我在 XN 资源编辑器中打开可执行文件时,我可以创建一个“清单”类型的新资源,并且当我以这种方式输入您的 XML 时,它运行良好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-07-02
    • 2016-12-18
    • 2012-03-21
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    相关资源
    最近更新 更多