2017-04-07 41 views
0

我希望我的批處理文件啓動具有提升(管理)權限的另一批處理文件,而不必接受提示。 我有一個用戶(稱爲「用戶」)擁有管理員權限,但如果我嘗試:Windows批處理文件用提升的權限啓動另一批次

runas /savecred /user:user "program.bat" 

權利不會得到提升。 但如果我嘗試:

runas /savecred /user:administrator "program.bat" 

,進入「用戶」的密碼,它說:未知的用戶或錯誤密碼。

所以:我需要做些什麼才能提升權利只與「用戶」-account?

+1

根據您的意見,您可能希望以管理員身份運行,但繞過操作系統內置的安全性。如果它可以在命令行中輕鬆繞過,那麼安全點會是什麼?如果這是你的問題,那麼這不是一個編程問題,這裏的主題不在話下。 – Compo

回答

0

這可能是一個有點矯枉過正,但如果第二個批處理文件應該是總是以管理員身份運行,你可以在它開始粘貼以下代碼:

@echo off & setlocal EnableDelayedExpansion 
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
    >NUL 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system" 
) ELSE (
    >NUL 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
) 
IF '%errorlevel%' NEQ '0' (
    echo Asking for administrative rights 
    goto uac 
) ELSE (goto adm) 
:uac 
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\uac.vbs" 
set params = %*:"="" 
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\uac.vbs" 
"%temp%\uac.vbs" 
del "%temp%\uac.vbs" 
cls 
echo Did not get administrative rights 
exit 
:adm 
pushd "%CD%" 
CD /D "%~dp0" 
cls 
echo Got administrative rights 

:: 
:: YOUR CODE HERE 
:: 

編輯:不會在禁用UAC時顯示提示並給予管理員權限。

+0

它以管理員身份啓動另一批處理,但在提示後首先啓動。我的問題是我無法接受提示。 –

+0

@ J.B。但那不是編程問題。你確定你沒有在密碼中輸入錯誤嗎? – NullDev

+0

不,因爲它啓動了程序......但沒有提升權限。 –

相關問題