我正在尝试编写一个在%programfiles%
中创建新目录的批处理文件。它需要以管理员身份运行。我试过了:
runas /user:admin-pc\admin "mkdir C:\Program Files\MyDir"
runas /user:admin-pc\admin "mkdir \"C:\Program Files\MyDir\""
runas /user:admin-pc\admin "cmd /c mkdir \"C:\Program Files\MyDir\""
runas /user:admin-pc\admin "cmd /c mkdir %programfiles%\MyDir"
runas /user:admin-pc\admin "cmd /c mkdir \"C:/Program Files/MyDir\""
runas /user:admin-pc\admin "cmd /c mkdir C:\Program^ Files\MyDir"
正确的方法是什么?
答案 0 :(得分:4)
问题原来是IExpress特有的。
您可以制作IExpress安装程序并使用ResHacker将其替换为我的答案中的清单。 http://angusj.com/resourcehacker它的资源类型为24。
哇。我从来不相信它。像魅力一样工作!打开它 ResHacker,将清单中的RequestedExecutionLevel更改为level = " requireAdministrator"在ResHacker中并保存。零缺陷。感谢
这个答案是特定的控制台程序 - 请参阅Run batch script as admin during Maven build以获得更通用的方法。
要在Windows中升级,推荐的方法是嵌入清单。哪个基于文本的程序无法完成。将vbscript放入VB.NET,添加清单并编译它很容易。
当前脚本编写方法模仿右键单击,然后以管理员身份运行。这仅适用于文件关联是Windows'默认值,例如,用户可以通过自定义系统来停止此方法。
请注意,runas不提供启动功能 具有提升的访问令牌的应用程序,无论它是否存在 具有备份操作员或备份操作员等权限的标准用户 管理员。 runas命令授予用户启动的能力 具有不同凭据的应用程序。 ......如果你的程序 以编程方式使用runas命令,确保它不是 旨在推出升级过程。 https://msdn.microsoft.com/en-us/library/bb530410.aspx
使用
RunAsAdminConsole <CMD Command Line>
EG
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 的文件。