私は多くの解決策を試しましたが、どういうわけかうまくいきませんでした。
現在、vbsからコマンドウィンドウなしでbatファイルを起動できますが、管理者として起動する方法がわかりません。
VBScript(コマンドウィンドウなしでバッチファイルを起動できるように):
Set oShell = CreateObject ("Wscript.Shell") Dim strArgs strArgs = "cmd /c Start.bat" oShell.Run strArgs, 0, false
バッチ(Start.bat):
Start /wait Application.exe Net stop ServiceNameGoesHere
バッチファイルを非表示にしたまま、管理者として起動するにはどうすればよいですか?
代わりに、 Windowsシェルオブジェクト の ShellExecute メソッドを使用し、runas
操作を使用できます。
_Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "Start.bat", , , "runas", 0
_
これにより、昇格が要求され、_Start.bat
_が実行されます。
ShellExecuteの引数は次のとおりです(MSDNのShellExecuteページから抜粋および要約されています)。
バッチファイルを実行するためにどうしても_cmd /c
_を使用する必要がある場合は、そのフルパスを指定する必要があります。呼び出しは次のようになります。
_Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "cmd", "/c F:\ull\path\to\Start.bat", , "runas", 0
_
このコードをバッチファイルの先頭に追加すると、管理者権限が自己要求されます。
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
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"
)
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"
:--------------------------------------
<YOUR BATCH SCRIPT HERE>