如何在 Visual Studio 2019 中将清单文件添加到我的 C# 程序?

Sim*_*kov 4 c# visual-studio visual-studio-2019

我有一个简单的应用程序,我想强制在管理模式下运行。为此,我需要编辑清单文件。我看到教程显示通过单击“项目->添加->新项目”来添加它,但那里没有适合我的清单文件。

我尝试制作自己的文件(并将其从项目属性设置为清单文件),但我不知道在那里写什么,这样它就不会崩溃。

清单文件丢失

Adr*_*ica 5

这是一个应该可行的分步“技巧”;它允许您获取默认嵌入清单的副本并进行相应的修改。

首先,通过“Add -> New Item ...”命令向您的项目添加一个新的 XML 文件,并将其命名为(例如)“Elevate.xml”。这最终将成为自定义清单。

接下来,要获取当前(嵌入)清单,(重新)构建项目并从 Visual Studio 中打开目标 (.exe) 文件。这应该在“资源浏览器”模式下打开该文件,类似于下图:

在此输入图像描述

在该资源管理器中,打开“RT_MANIFEST”节点并双击显示的“1(中性)”子节点;这将打开一个新窗口,其中程序的嵌入当前(默认)清单显示为二进制资源。清单实际上采用 XML 文本格式,您可以从最右侧的列中选择该文本(忽略一些前导/尾随的不可打印数据),如下所示:

在此输入图像描述

复制该选择,打开之前的“Elevate.xml”文件,删除其所有现有内容并“粘贴”清单资源数据;这将为您提供类似于下图所示的内容:

<?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" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
Run Code Online (Sandbox Code Playgroud)

然后,您可以将“asInvoker”级别更改为“highestAvailable”,保存该文件并将其(在项目树中)重命名为“Elevate.manifest”。然后,您可以在项目的属性中选择该自定义清单:

在此输入图像描述

我已经在本地(但非常简单)示例程序上测试了此方法,并且它似乎有效:当我运行该程序时,系统确实会要求我提供管理员凭据。如果您有任何问题,那么您的情况可能需要进行一些细微的调整。