2

我需要以不同的用户身份登录到 Windows,然后通过批处理脚本将用户切换到管理员用户。RUNAS windows 实用程序对我有用。谁能帮帮我吗?

4

2 回答 2

3

RunAs不起作用,因为在(我假设您正在使用)Windows 7 中默认禁用管理帐户。

我发现启动提升的命令提示符(甚至从批处理脚本)的最简单方法是创建提升的快捷方式。

First, Right-Click on your desktop and Click "New -> Shortcut"
Next type CMD into the box labled "Type the location of the item:"
Click "Next -> Finish"

CMD.exe现在,您的桌面上有一个新的快捷方式。下一个...

Right Click "CMD.exe -> Properties -> Advanced..."
Check "Run as administrator"
Click "OK -> OK"

现在您有了一个快捷方式C:\Windows\System32\cmd.exe,它将cmd.exe以管理权限启动。您现在可以将快捷方式移动到您想要的任何位置,只需确保它位于 PATH 变量中的某个位置,因此您不必在调用它时指定它的路径。我有一个用于批处理文件的特殊目录,还有一个用于第 3 方可执行文件的目录。我将我的移动到批处理目录。

现在根据 Windows,快捷方式的名称是 cmd.exe,但是如果您进入“DOS”,您将能够看到它实际上命名为cmd.exe.lnk. 我将我的重命名为cmd.Admin.lnk只是为了指定它的作用。

您现在可以通过几种不同的方式启动它。

单击START Ball,然后键入:(cmd.exe.lnkReturncmd.admin.lnk,无论您选择哪个)。
打开命令提示符并键入:cmd.exe.lnkReturn
将行添加cmd.exe.lnk到批处理文件。

您甚至可以传递它的参数,例如:

cmd.admin.lnk "/c echo. & echo %time% & echo. & pause.exe"
cmd.admin.lnk "/c cd /d d:\tmp & x.bat & echo. & echo %time% & echo. & pause.exe"
cmd.admin.lnk "/c title The Shiznit & echo. & echo %date% %time% & echo. & pause.exe"
cmd.admin.lnk "/c title The Shiznit & echo. & echo %date% %time% & echo. & pause.exe & exit 999"

最后一个示例将返回%errorlevel%999。尽管不会传回其他变量。

请注意我必须如何.exe在内部命令之后放置pause。我发现您可以通过这种方式强制执行许多内部命令。甚至.com工作。

最后,与 不同runas的是,使用此快捷方式将做两件事

首先,它会创建一个弹出窗口,要求获得以管理权限执行的权限。这与默认禁用管理员帐户一样,是一种防止恶意程序和脚本运行的安全措施。

其次,如果从命令提示符或批处理文件启动,它将打开另一个命令解释器窗口。除非您使用 启动它,否则start调用窗口会等待新窗口关闭,然后继续执行批处理文件或命令解释器停止的位置。

于 2012-10-22T00:03:05.890 回答
0

CPAU.exe 是解决此问题的好方法

于 2013-08-20T09:35:34.953 回答