我需要运行需要注册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