我需要運行需要註冊DLL的批處理文件。 DLL註冊失敗,因爲批處理文件未以「管理員」身份啓動命令提示符。如何創建批處理文件以管理員身份運行cmd
有什麼辦法,啓動「命令提示符」爲管理員通過批處理文件。
環境:Win7的/ Vista的
我需要運行需要註冊DLL的批處理文件。 DLL註冊失敗,因爲批處理文件未以「管理員」身份啓動命令提示符。如何創建批處理文件以管理員身份運行cmd
有什麼辦法,啓動「命令提示符」爲管理員通過批處理文件。
環境:Win7的/ Vista的
您可能需要使用另一個批處理文件率先推出第二擁有管理員權限。
在第一次使用
runas /noprofile /user:mymachine\administrator yourbatchfile.bat
在進一步閱讀,你必須能夠在提示符下鍵入密碼。出於安全原因,您無法輸入密碼,因爲此功能被鎖定。
您可能更喜歡psexec。
(這是基於@DarkXphenomenon's answer,不幸遇到了一些問題。)
你需要這種包裝中的封裝代碼:
if _%1_==_payload_ goto :payload
:getadmin
echo %~nx0: elevating self
set vbs=%temp%\getadmin.vbs
echo Set UAC = CreateObject^("Shell.Application"^) >> "%vbs%"
echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
goto :eof
:payload
echo %~nx0: running payload with parameters:
echo %*
echo ---------------------------------------------------
cd /d %2
shift
shift
rem put your code here
rem e.g.: perl myscript.pl %1 %2 %3 %4 %5 %6 %7 %8 %9
goto :eof
這使得批處理文件運行本身作爲提升用戶。它增加了兩個參數的特權代碼:
字,以指示這是有效載荷呼叫,即已經升高。否則 它只會反覆打開新的進程。
目錄主路徑被調用的路徑。由於事實的Windows 總是 開始升高cmd.exe,在「%WINDIR%\ SYSTEM32」,有知道什麼 原始路徑是(和保留了無 感人各地複製你的腳本的能力沒有簡單的方法代碼)
注:不幸的是,由於某種原因,shift
不適合%*
工作,所以如果你需要 通過實際的參數,你將不得不訴諸醜陋符號我在使用 示例(%1 %2 %3 %4 %5 %6 %7 %8 %9
),這也帶來了 的限制,最多9個參數
您可以使用鏈接到批處理文件的快捷方式。只需進入快捷方式的屬性並選擇高級,然後「以管理員身份運行」。
然後只是使該批處理文件隱藏,並運行快捷方式。
這樣,您甚至可以爲快捷方式設置自己的圖標。
我的'以管理員身份運行「複選框被禁用。我怎樣才能克服它? – 2014-02-24 11:51:04
嗯,不確定。那很有意思。 – user2549366 2018-02-06 08:48:05
這可能是一個解決方案,我做了類似的事情,但這個似乎並不工作 例如,如果必要的功能需要管理員權限,它應該要求您以管理員身份重新啓動它。
@echo off
mkdir C:\Users\cmdfolder
if echo=="Access is denied." (goto :1A) else (goto :A4)
:A1
cls
color 0d
echo restart this program as administator
:A4
pause
也許是這樣的:
if "%~s0"=="%~s1" (cd %~sp1 & shift) else (
echo CreateObject^("Shell.Application"^).ShellExecute "%~s0","%~0 %*","","runas",1 >"%tmp%%~n0.vbs" & "%tmp%%~n0.vbs" & del /q "%tmp%%~n0.vbs" & goto :eof
)
這個腳本的伎倆!只需將其粘貼到您的bat文件的頂部即可。如果要查看腳本的輸出,請在批處理文件的底部添加一個「暫停」命令。
現在稍微編輯此腳本以支持命令行參數。
@echo off
:: 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"
set params = %*:"="
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
::--------------------------------------
::ENTER YOUR CODE BELOW:
按下Ctrl鍵+移和雙擊快捷方式作爲提升的進程中運行。
也可以從開始菜單工作。
這適用於我在`在Windows 7至10與參數,也踢任何地方(包括瀏覽器),並從任何地方訪問文件啓動應用程序或文件,用您的代碼替換(您的BATCH SCRIPT HERE錨)溶液有助於:)
@echo off
call :isAdmin
if %errorlevel% == 0 (
goto :run
) else (
echo Requesting administrative privileges...
goto :UACPrompt
)
exit /b
:isAdmin
fsutil dirty query %systemdrive% >nul
exit /b
:run
<YOUR BATCH SCRIPT HERE>
exit /b
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B`
由於user2549366之前的建議,「你可以用鏈接到該批處理文件的快捷方式。」但在快捷方式的「屬性」 - >「兼容性」選項卡中,以管理員身份運行可能會被禁用。
因此,您只需右鍵單擊您的「file.bat - 快捷方式」,然後轉到 - >屬性 - >快捷方式選項卡 - >高級,然後您可以單擊以管理員身份運行。之後,您可以執行快捷方式。
使用記事本或任何文本編輯器選擇一個文本。打開記事本,寫下這個不帶引號的簡短命令「cmd.exe」並將其另存爲cmd.bat。
點擊cmd.bat並選擇「以管理員身份運行」。
下面是基本上相同的文件的更簡單的版本。
@echo off
break off
title C:\Windows\system32\cmd.exe
cls
:cmd
set /p cmd=C:\Enter Command:
%cmd%
echo.
goto cmd
防止當腳本文件駐留在非系統驅動器(c :)和空間目錄中時腳本失敗。
Batch_Script_Run_As_Admin.cmd
@echo off
if _%1_==_payload_ goto :payload
:getadmin
echo %~nx0: elevating self
set vbs=%temp%\getadmin.vbs
echo Set UAC = CreateObject^("Shell.Application"^) >> "%vbs%"
echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
goto :eof
:payload
::ENTER YOUR CODE BELOW::
::END OF YOUR CODE::
echo.
echo...Script Complete....
echo.
pause
http://technet.microsoft.com/en-us/library/bb490994 – 2012-07-17 14:44:51
參見[我怎麼能自動提升我的批處理文件,所以它請求來自UAC管理員權限,如果需要?](http://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-admin -rights) – GAThrawn 2013-05-13 14:50:17
@EdGreaves是不是這個問題的鏈接? – notyou 2017-10-20 09:46:10