批处理文件中的mkdir为admin

时间:2017-12-19 21:36:29

标签: batch-file runas iexpress

我正在尝试编写一个在%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"

正确的方法是什么?

1 个答案:

答案 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 的文件。