这个问题原来是 IExpress 特定的。
您可以制作您的 IExpress 安装程序并使用 ResHacker 将其清单替换为我的答案中的清单。http://angusj.com/resourcehacker这是资源类型 24。
哇。我永远不会相信它。像魅力一样工作!在 ResHacker 中打开它,将清单中的 RequestedExecutionLevel 更改为 ResHacker 中的 level="requireAdministrator" 并保存。零缺陷。谢谢
这个答案是特定于控制台程序的 - 请参阅在 Maven 构建期间以管理员身份运行批处理脚本以获得更通用的方式。
要在 Windows 中升级,推荐的方法是嵌入清单。对于基于文本的程序,这是无法做到的。将 vbscript 放入 VB.NET、添加清单并编译它很容易。
当前的脚本方法模仿右键单击,然后以管理员身份运行。这仅在文件关联是 Windows 的默认设置时才有效,例如,用户可以通过自定义他们的系统来停止这种方法的工作。
请注意,runas 不提供使用提升的访问令牌启动应用程序的能力,无论它是具有备份操作员或管理员等特权的标准用户。runas 命令授予用户使用不同凭据启动应用程序的能力。...如果您的程序以编程方式使用 runas 命令,请确保它不打算启动提升的进程。
https://msdn.microsoft.com/en-us/library/bb530410.aspx
使用
RunAsAdminConsole <CMD Command Line>
例如
RunAsAdminConsole mkdir "C:\Program Files\MyDir"
文件。将每个文件放在桌面上。必须是 ANSI。将此行从更改/k
为/c
您喜欢的Shell("cmd /k " & Command())
RunAsAdminConsole.vb
imports System.Runtime.InteropServices
Public Module MyApplication
Public Sub Main ()
Dim wshshell as object
WshShell = CreateObject("WScript.Shell")
Shell("cmd /k " & Command())
End Sub
End Module
RunAsAdmin.Manifest
<?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"
processorArchitecture="*"
name="Color Management"
type="win32"
/>
<description>RunAsAdminConsole</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
以及上面编译的批处理文件RunAsAdminConsole.bat
C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc "%userprofile%\Desktop\RunAsAdminconsole.vb" /win32manifest:"%userprofile%\Desktop\RunAsAdmin.manifest" /out:"%userprofile%\Desktop\RunAsAdminConsole.exe" /target:exe
一个名为RunAsAdminConsole.exe的文件将出现在桌面上。