Stu*_*ole 11 windows command-line batch-file
我正在尝试编写一个批处理文件,该文件需要使用本地管理员帐户(启动/停止服务)运行一些命令,并使用登录用户(从用户目录复制文件)运行一些命令,但我遇到了问题。我尝试了以下命令:
runas 与 /savecred
runas /user:(PC name)\(admin username) /savecred "net stop \"(service name)\""
runas /user:(PC name)\(admin username) /savecred "sc stop \"(service name)\""
Run Code Online (Sandbox Code Playgroud)
使用/savecred时不会提示我输入密码。相反,命令提示符窗口会短暂闪烁并消失。我不知道这个窗口里有什么。服务没有停止。
没有 /savecred 的 runas
runas /user:(PC name)\(admin username) "net stop \"(service name)\""
runas /user:(PC name)\(admin username) "sc stop \"(service name)\""
Run Code Online (Sandbox Code Playgroud)
这些命令确实会提示我输入密码,但随后表现出与上述命令相同的行为 - 命令提示符窗口会短暂弹出并且服务并未停止。
理想情况下,我想保存会话的密码,因为我需要运行更多带有详细信息的命令。
这是可能的,如果是这样,我做错了什么?
小智 12
您可以将以下内容添加到您的脚本中,它会强制它以提升的方式运行。无需下载任何东西。
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
Run Code Online (Sandbox Code Playgroud)
“Runas”命令不会“sudo”您的命令。
要从批处理文件执行此操作,您需要“提升”正在生成的命令。下载 Elevate Powertoy 脚本。
http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
启动你的命令:
runas /user:(PC name)\(admin username) /savecred "elevate.cmd net stop \"(service name)\""
Run Code Online (Sandbox Code Playgroud)
或者
runas /user:(PC name)\(admin username) /savecred "elevate sc stop \"(service name)\""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128579 次 |
| 最近记录: |