C# 如何在程序启动时请求管理员权限?
我需要我的软件能够在Windows Vista上以管理员身份运行(如果有人在没有管理权限的情况下运行它,它将崩溃) 当启动其他软件时,我看到系统在应用程序试图获取管理权限时发出的提示,如“此软件将以管理员身份运行。是否继续?”C# 如何在程序启动时请求管理员权限?,c#,windows,windows-7,windows-vista,C#,Windows,Windows 7,Windows Vista,我需要我的软件能够在Windows Vista上以管理员身份运行(如果有人在没有管理权限的情况下运行它,它将崩溃) 当启动其他软件时,我看到系统在应用程序试图获取管理权限时发出的提示,如“此软件将以管理员身份运行。是否继续?” 在Windows Vista上运行c#应用程序时,如何请求管理权限?将以下内容添加到清单文件中: <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 您还可以
在Windows Vista上运行c#应用程序时,如何请求管理权限?将以下内容添加到清单文件中:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
您还可以对该级别使用highestAvailable
请查看以下关于嵌入清单文件的信息:
PS:如果您没有清单文件,您可以轻松添加一个新的清单文件:
在Visual Studio中,右键单击项目->添加项->选择
应用程序清单文件(在Visual C#项的“常规”下)
添加的文件已包含上述部分,只需将级别从
asInvoker
更改为requireAdministrator
,您需要在清单中使用requestedExecutionLevel
标记:
将此XML放入名为yourexename.exe.manifest的文件中:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
对于F#Visual Studio 2013,包括使用FSharp编译器的/win32manifest
标志请求管理员提升的清单文件,如下所示对我有效。因此,给定一个名为“App.Exe”的项目输出
生成操作
为无”且
复制到输出…为
不复制
约定这样的文件名为
App.Exe.manifest`。如果需要uiAccess(用户界面),则
程序集必须具有强名称
<?xml version="1.0" encoding="utf-8" ?>
<asmv1:assembly manifestVersion="1.0"
xmlns="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="App" />
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
其他标志:
输入字段以包括以下内容:/win32manifest:
。例如,在本例中,/win32manifest:App.Exe.manifest
请不要忘记,这样做只会隐藏潜在的问题,而不会修复它。即使您的程序确实需要管理员权限,但如果没有获得这些权限,它也不会崩溃。最可能的原因是您未能在系统调用后检查错误情况。值得一提的是,如果您添加应用程序Manifest文件在VS中,通过这种方式,您可以在那里获得一个带有许多其他选项的模板(比如说,您的应用程序只能在Windows 10及以上版本上运行)在VS2017上测试。@PerLundberg-不值得一提,因为最初的提问者没有问这个问题——他问了管理员Permissions@Momoro关于SO的问题不仅是为了OP,也是为了社区的更大利益。其他人在寻找其他解决方案时可能会发现这个问题,而不仅仅是OP所要求的一般来说,教人们“你可以用应用程序清单做这些事情”并没有什么坏处。我并不是在暗示什么粗鲁的事情(如果我是这样的话,很抱歉),我只是在阅读旧的答案/问题,有点困惑:d