2012-12-07 3 views
0

J'ai créé un lot pour exécuter des commandes spécifiques, le code ressemble à ceci:exécuter un fichier de configuration dans un lot en tant qu'administrateur?

cd D:\projects\Project Stress Test\signed one\com0com\x64 
setupc 
pause 

ce que je veux est d'exécuter le fichier setupc en tant qu'administrateur?

J'ai essayé runas /user:<Name>\administrator commandes mais cela n'a pas fonctionné.

Y at-il un moyen facile de faire cela?

+1

Vous n'avez pas besoin de guillemets autour de ce chemin? Il y a des espaces. – Blorgbeard

+0

Assurez-vous que vous utilisez correctement [runas] (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/runas.mspx?mfr=true). –

+0

@Blorgbeard, en fait le chemin fonctionne et je peux exécuter le fichier à partir du lot. mais ce que je suis en train de faire est de fonctionner en tant qu'administrateur – Liban

Répondre

3

Vous pouvez faire en sorte que le script entier s'exécute au niveau de l'administrateur. Voici une fonction batch que j'utilise dans mes scripts.

@echo off 
call :Admin xReturn true 1 
echo.%xReturn% 
goto End 

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:Admin <Return> [Needed] [Success] 
:: Check for Administrator privileges and request privileges if needed. 
:: NOTE: This will restart the script with Admin privs if Needed is set to true. 
:::: Usage: call :Admin xReturn true 
:: Return success value, if user is Admin. Default `true` if Success not set. 
setlocal 
set xVBUAC=%Temp%\AdminUAC.vbs 
set xSuccess=true 
if not "%~3"=="" set xSuccess=%~3 

:: Check for Access 
::net session >nul 2>&1 
>nul 2>&1 "%SystemRoot%\system32\cacls.exe" "%SystemRoot%\system32\config\system" 
if %ErrorLevel% EQU 0 set xAdmin=%xSuccess% 

:: Execute UAC 
if /i not "%xAdmin%"=="%xSuccess%" if not "%~2"=="" if /i "%~2"=="true" (
    echo Set UAC = CreateObject^("Shell.Application"^) > "%xVBUAC%" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%xVBUAC%" 
    if exist "%xVBUAC%" (
     "%xVBUAC%" 
     rem if %ErrorLevel% EQU 5 echo Access Denied. Launching UAC. 
     del "%xVBUAC%" 
    ) 
) 
endlocal & if not "%~1"=="" set "%~1=%xAdmin%" 
goto :eof 

:End 
+0

merci, je vais essayer. – Liban

Questions connexes