Windows 命令行如何获取管理员权限?
bat吧
全部回复
仅看楼主
level 10
1227961 楼主
Windows的命令行我一般是Win+R 然后 cmd 打开的。
但是有时候需要执行某些操作需要以管理员身份运行,这个时候也懒得重新以管理员权限打开CMD。
我目前的解决办法是:
在某个被添加到PATH变量的文件夹里建立一个快捷方式,目标指向“C:\Windows\System32\cmd.exe”,然后在属性里勾选以管理员身份运行。这样在发现接下来的操作需要管理员权限的时候,就输入这个快捷方式的文件名。
然而,这样有个问题,这样打开的CMD默认位置在System32,如果我之前的工作在其它路径,我还得慢慢打开那个位置。所以我又改进了这个方案:
建立一个名为su.cmd的文件,它负责把%CD%(当前位置)变量存到我自定义的变量CURRENT_DIR中,然后打开那个快捷方式,然后判断是否有新的CMD窗口打开,从而关闭当前窗口。我还建立了一个cdr.cmd的文件,主要内容就是 cd /d %current_dir%。
这样,我输入“su”,就会弹出UAC对话框,我点击确认后,会新打开一个以管理员身份运行的CMD,然后我输入“cdr”,就会回到之前的工作路径,之前的普通CMD窗口就自动关闭。
想问问有没有什么更好的办法?
2018年08月22日 11点08分 1
level 10
调用VBS
2018年08月22日 14点08分 2
level 7
@echo off
REM ________________________________________________________________
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 请求管理员权限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\phoenixgetadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\phoenixgetadmin.vbs"
"%temp%\phoenixgetadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\phoenixgetadmin.vbs" ( del "%temp%\phoenixgetadmin.vbs" )
2018年08月25日 07点08分 3
1