我以用户身份登录并想以“runas”以管理员身份运行一些命令脚本。
这不起作用:“>runas /user:administrator mybatch.cmd”:mybatch.cmd 执行但未以管理员身份运行。
或者“runas /user:administrator cmd.exe” - 它确实运行命令提示符,它说“以管理员身份运行” - 但实际上并非如此。
我可以右键单击 mybatch.cmd 并“以管理员身份运行”:并且效果很好。
看起来“用户帐户控制”对话框提示管理员和“runas /user:administrator”之间存在很大区别。
我已将用户控制设置为 0 并重新启动,以防万一,但没有什么区别。
答案1
RunAs 确实不起作用;它的帮助中是这样说的:
RunAs 无法启动具有提升访问令牌的应用程序。
因此,您只是告诉它以“管理员”帐户运行;它将从管理员帐户运行您的程序(使用其设置、环境变量等),但实际上没有管理权限,就像从管理员组中的任何帐户运行程序一样。程序需要请求授予管理员权限。
您到底想做什么?如果您只是想以管理员身份手动运行批处理文件而不必右键单击它,您可以创建它的快捷方式,右键单击该快捷方式,在上下文菜单上选择“属性”,转到“快捷方式”选项卡,然后选中“以管理员身份运行”。然后,单击“确定”后,每次运行该快捷方式时,它都会以管理员身份运行。
例如,如果您希望它在每次登录时运行,则可以使用计划任务,正如 Fazer87 解释的那样这里:
打开任务计划程序
创建新任务
在“常规”选项卡中 - 确保输入以下设置:
“无论用户是否登录都运行”
“以最高权限运行”
“配置”(您的操作系统)
- 在“触发器”选项卡中,添加触发器(计划)时 - 确保选中“已启用”复选框
要从命令运行,您可以使用 RunAs,但还有更方便的工具,例如WinAero 的“Ele”这会对你有所帮助。你只需将其放入 %path% 中的任何路径(可能是 C:\Windows\system32),然后你就可以使用命令“ele myfile.bat”。
最后,你可以通过 Start-Process 命令使用 PowerShell 启动提升权限的程序。如上所述这里,在未提升的 PowerShell 窗口中,您可以输入:
Start-Process powershell -ArgumentList '-noprofile -file MyScript.ps1' -verb RunAs