我需要以不同的用户身份登录到 Windows,然后通过批处理脚本将用户切换到管理员用户。RUNAS windows 实用程序对我有用。谁能帮帮我吗?
2 回答
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.lnk
Return或cmd.admin.lnk
,无论您选择哪个)。
打开命令提示符并键入:cmd.exe.lnk
Return
将行添加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
调用窗口会等待新窗口关闭,然后继续执行批处理文件或命令解释器停止的位置。
CPAU.exe 是解决此问题的好方法