以管理员身份运行批处理文件 - Windows 7 - 从网络文件系统运行命令 "Run As"

7

我需要设置程序安装器的交付。

这个程序有一个program_installer.exe和一个文件夹,但是在创建安装程序时无法包含该文件夹。

因此,当用户需要安装程序时,我会通过邮件发送一个批处理文件。

@echo off
if DEFINED PROGRAMFILES(X86) (
SET TOOL_INSTALL_DIR="%PROGRAMFILES(X86)%\myfolder"
) else (
SET TOOL_INSTALL_DIR="%PROGRAMFILES%\myfolder"
)

MKDIR %TOOL_INSTALL_DIR%
copy /y \\rk0012352\Public\lkh5iwwh.m4s %TOOL_INSTALL_DIR%


START %PROGRAMFILES%\program_installer.exe

问题在于,当用户执行BATCH并运行COPY命令时,在Windows 7上,由于他没有管理员权限,所以该命令将失败。
我如何使复制命令在XP和7上都以管理员身份运行?
你可能会说:当用户收到INSTALL.BAT邮件时,他不能点击“以管理员身份运行”吗?
不幸的是,大多数人不会这样做,只会抱怨它不起作用。此外,像Outlook这样的电子邮件客户端将提示“打开”“保存”选择面板,大多数用户将直接单击“打开”(生成无权错误)。
"以管理员身份运行"命令需要指定机器的管理员名称,我无法知道每台计算机的管理员用户称呼。
有什么建议吗?

1
您还可以使用此批处理脚本,它会自动提升权限:stackoverflow.com/a/12264592/1016343 - Matt
@Matt的网址https://dev59.com/O2w05IYBdhLWcg3wxUj_#12264592 - Kiquenet
@Kiquenet:两者都涉及同一个问题:如何自动提升我的批处理文件,以便它从UAC管理员请求? - Matt
3个回答

7

这有点棘手,但是它是可以完成的。

首先,您需要知道(从批处理文件中)用户是否为管理员。如果是管理员,则可以继续安装。如果不是,则可以运行另一个cmd.exe实例以管理员身份运行批处理文件(使用runas命令)。

要检测用户是否为管理员,请参考此帖子:http://www.tomshardware.co.uk/forum/169421-36-determine-batch-file-user-administrator(其中包含提升批处理本身的完整代码)。


4

不是同一件事。

如果您在管理员组中,提升自己的权限范围与仅在范围内运行是有区别的。

只使用 runas /user:username@domain.com program.exe 似乎不同于右键单击,然后选择“以管理员身份运行”。


这两件事情绝对不一样。“以管理员身份运行”不会提示输入密码,而“runas user:administrator”则会。 - haughtonomous
哦,如果你可以右键单击并以管理员身份运行,那么runas有什么意义呢? - solstice333

2

在PowerShell中有一种方法可以实现这个功能:

PS> Start-Process powershell -Verb runAs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接