kar*_*ari 138 windows batch-file
我在BAT文件中有这一行:
"Example1Server.exe"
Run Code Online (Sandbox Code Playgroud)
我想在管理员模式下执行此操作.如何修改bat代码以管理员身份运行它?
它是否正确?我需要加上报价吗?
runas /user:Administrator invis.vbs Example1Server.exe
Run Code Online (Sandbox Code Playgroud)
Ed *_*ves 347
另一个答案要求您输入管理员帐户密码.此外,在管理员组中的帐户下运行与管理员运行不同,请参阅:维基百科上的UAC
Windows 7说明
要以管理员身份运行,请为批处理文件创建快捷方式.
然后,您可以设置以管理员身份运行的快捷方式:
现在,当您双击快捷方式时,它将提示您进行UAC确认,然后以管理员身份运行(如上所述,与在管理员组中的帐户下运行不同)
查看下面的截图
注意: 执行以管理员身份运行时,当前目录(路径)将与bat文件不同.在许多情况下,这会导致一些问题,即bat文件引用它旁边的相关文件.例如,在我的Windows 7中,cur目录将是SYSTEM32而不是bat文件位置! 要解决它,你应该使用
cd "%~dp0"
或更好
pushd "%~dp0"
确保cur目录与bat文件所在的路径相同.
Ker*_* SB 66
您用来runas
以特定用户身份启动程序:
runas /user:Administrator Example1Server.exe
Run Code Online (Sandbox Code Playgroud)
Sir*_*ire 15
只需将其添加到bat文件的顶部即可:
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
Run Code Online (Sandbox Code Playgroud)
它将提升为admin并保留在正确的目录中。在Windows 10上测试。
如果您可以使用第三方实用程序,这是一个elevate
命令行实用程序.
这是用法说明:
Usage: Elevate [-?|-wait|-k] prog [args]
-? - Shows this help
-wait - Waits until prog terminates
-k - Starts the the %COMSPEC% environment variable value and
executes prog in it (CMD.EXE, 4NT.EXE, etc.)
prog - The program to execute
args - Optional command line arguments to prog
Run Code Online (Sandbox Code Playgroud)
小智 6
使用此工具将批处理文件转换为.exe:http://www.battoexeconverter.com/然后您可以以管理员身份运行它
您可以使用nircmd.exe的迅速提升命令
NirCmd命令参考 - 提升
elevate [Program] {Command-Line Parameters}
Run Code Online (Sandbox Code Playgroud)
仅适用于Windows Vista/7/2008:运行具有管理员权限的程序.当[程序]包含一个或多个空格字符时,必须将其放在引号中.
例子:
elevate notepad.exe
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS
elevate "c:\program files\my software\abc.exe"
Run Code Online (Sandbox Code Playgroud)
PS:我在win 10上使用它并且它有效
go get github.com/mattn/sudo
Run Code Online (Sandbox Code Playgroud)
然后
sudo Example1Server.exe
Run Code Online (Sandbox Code Playgroud)
我的实验表明,runas命令必须包含管理员用户的域(至少在我组织的环境设置中是这样):
\n\nrunas /user:AdminDomain\\AdminUserName ExampleScript.bat\n
Run Code Online (Sandbox Code Playgroud)\n\n如果您不知道管理员用户的域,请以管理员用户身份运行命令提示符实例,然后输入以下命令:
\n\necho %userdomain%\n
Run Code Online (Sandbox Code Playgroud)Kerrek SB和Ed Greaves提供的答案将在管理员用户下执行目标文件,但是,如果该文件是尝试在正常登录下操作的命令脚本(.bat 文件)或 VB 脚本(.vbs 文件) user\xe2\x80\x99s 环境(如修改注册表项),可能得不到想要的结果,因为脚本实际运行的环境是admin用户的环境,而不是普通登录用户的环境!例如,如果该文件是在注册表 \xe2\x80\x99s HKEY_CURRENT_USER 配置单元上运行的脚本,则受影响的 \xe2\x80\x9ccurrent-user\xe2\x80\x9d 将是管理员用户,而不是正常登录用户用户。
我想我有一个密码问题的解决方案.这个单一的论点确实令人惊叹.它要求输入一次密码,而不是再次询问密码.即使你把它放到另一个程序上,它也不会要求输入密码.这里是:
runas /user:Administrator /savecred Example1Server.exe
我在 Windows 11 上测试了@Sire 的答案,它非常有效。值得一提的是,使用cmd /k
- 正如 @Sire 所使用的 - 将使管理员 CMD 在完成运行后保持打开状态。使用cmd /c
替代方法将在批处理文件结束时关闭窗口。
set "params=%*"
cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/c cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B )
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
578990 次 |
最近记录: |