Sim*_*kov 4 c# visual-studio visual-studio-2019
我有一个简单的应用程序,我想强制在管理模式下运行。为此,我需要编辑清单文件。我看到教程显示通过单击“项目->添加->新项目”来添加它,但那里没有适合我的清单文件。
我尝试制作自己的文件(并将其从项目属性设置为清单文件),但我不知道在那里写什么,这样它就不会崩溃。
这是一个应该可行的分步“技巧”;它允许您获取默认嵌入清单的副本并进行相应的修改。
首先,通过“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”。然后,您可以在项目的属性中选择该自定义清单:
我已经在本地(但非常简单)示例程序上测试了此方法,并且它似乎有效:当我运行该程序时,系统确实会要求我提供管理员凭据。如果您有任何问题,那么您的情况可能需要进行一些细微的调整。
| 归档时间: |
|
| 查看次数: |
3980 次 |
| 最近记录: |