2013-02-01 2 views
14

클라이언트/서버 검사 프로그램을 작성하고 있지만 관리자로 실행해야합니다. 내 네트워크와 사용자가 자동으로 실행되기를 원하며 "관리자 권한으로 실행"프롬프트가 표시되지 않게하려고합니다. 관리자가 자동 ​​실행되도록 배치 파일에 배치 할 수있는 시작 코드가 있습니까?/관리자로 실행되도록 배치 스크립트

답변

13

NOPE - [-> 호환성 -> "이 프로그램을 관리자로 실행"] 솔루션이 작동하지 않습니다.

이 옵션은 심지어 UAC 장애인

와 윈도우 7에서 회색으로 표시됩니다

-

NOPE - 제 1, "RUNAS/ENV/사용자 : 도메인 \ 관리자"

도 충분하지 않습니다 이는 사용자에게 관리자 비밀번호를 요구하기 때문입니다.

-

예 - UAC를 사용하지 않도록 설정 -> 이것은 나를 위해 일한 작업 사용하여 작업 스케줄러

만들기 : 이 작업 스케줄러에서 작업을 만들고이를 관리자 권한이있는 사용자로 실행하기를. 명시 적으로 표시 : "가장 높은 권한으로 실행" 이 작업을 실행할 것인지 묻는 메시지가 나타나지 않도록 UAC를 사용하지 마십시오.

나중에 원하는 경우 레지스트리를 편집하여 스크립트에서 UAC를 사용하도록 설정할 수 있습니다. 필자의 경우이 스크립트는 이미지에서 UAC가 비활성화 된 Windows 가상 시스템을 생성하여 한 번만 실행됩니다.

스크립트에 대한 최상의 접근 방식을 기대하면서 많은 번거 로움없이 관리자 권한으로 실행합니다. ,

니카를

set ELEVATE_APP=Full command line without parameters for the app to run 
set ELEVATE_PARMS=The actual parameters for the app 
echo Set objShell = CreateObject("Shell.Application") >elevatedapp.vbs 
echo Set objWshShell = WScript.CreateObject("WScript.Shell") >>elevatedapp.vbs 
echo Set objWshProcessEnv = objWshShell.Environment("PROCESS") >>elevatedapp.vbs 
echo objShell.ShellExecute "%ELEVATE_APP%", "%ELEVATE_PARMS%", "", "runas" >>elevatedapp.vbs 
DEL elevatedapp.vbs 

감사합니다 : 지금까지 어떤 간단한 스크립트를 찾을 수없는 것처럼

+1

UAC 부분 UAC 사용 안 함 C : \ Windows \ System32 \ cmd.exe/k % windir % \ System32 \ reg.exe HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 0/f UAC 사용 가능 C : \ Windows \ System32 \ cmd.exe/k % windir % \ System32 \ reg.exe HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 1/f – zenin

4

그것의 가능한 사용하는 구문은 다음과 같습니다

RUNAS [/profile] [/env] [/netonly] /user:user Program 

Key : 
/profile Option to load the user's profile (registry) 
/env Use current environment instead of user's. 
/netonly Use the credentials specified only for remote connections. 
/user Username in form [email protected] or DOMAIN\USER 
([email protected] is not compatible with /netonly) 
Program The command to execute 

예 :. 당신은 몇 가지 옵션이 있습니다

runas /env /user:domain\Administrator <program.exe/command you want to execute> 
+10

암호를 입력하라는 메시지가 표시됩니다. – eddyq

+0

@eddyq 그러나 질문의 ​​본문이 자신이 원하는 말을 변경하더라도 질문의 제목에 대한 답변입니다. – leetNightshade

+0

제목은 질문이 아닙니다. 본문이 질문입니다. 제목은 제목입니다. 세부 정보가 포함되어 있으므로 본문이 우선 순위를 갖습니다. –

0

시작 항목으로 지정할 수 있습니다. 시작 항목은 관리자 권한으로 실행하라는 메시지를 표시하지 않습니다.

확인이 문서 Elevated Program Shortcut Without UAC rompt

+0

스택 오버플로에 대한 답변에 "답변을 찾을 수있는 Google"이 포함되어서는 안됩니다. –

+0

죄송합니다. 편집 – sandrows

+0

더 나은 지금, 고마워. –

1

바로 가기를 만들고 항상 관리자 권한으로 실행하는 바로 가기를 설정합니다.

괴짜 어떻게에 포럼 Make a batch file to run cmd as administrator 솔루션 :

이 편집기에서 배치 파일을 확인하고 nameit.bat이 다음에 바로 가기를 만들 수 있습니다. Nameit.bat - 바로 가기. Nameit.bat - 바로 가기 -> 등록 정보 -> 바로 가기 탭 -> 고급을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 클릭하십시오. 바로 가기에서 실행하십시오.

+2

배치 파일이나 가리키는 바로 가기에 대해 '관리자 권한으로 실행'을 설정할 수 없습니다. – StormPooper

+1

배치 파일에 설정할 수는 없지만 ** 단축키로 설정할 수 있습니다 ** – icc97

1

, 여기에 내 두 센트입니다.

0

위의 모든 대답이 마음에 들지 않으면 autoIT를 사용하여 파일 (또는 무엇을 파일로 만드는지)을 자격 증명이있는 특정 사용자로 실행할 수 있습니다.

해당 사용자 privelages를 사용하여 프로그램을 실행할 스크립트 예제.

installAdmin() 

Func installAdmin() 
    ; Change the username and password to the appropriate values for your system. 
    Local $sUserName = "xxxxx" 
    Local $sPassword = "xxx" 
    Local $sDirectory = "C:\ASD4VM\Download\" 
    Local $sFiletoRun = "Inst_with_Privileges.bat" 

    RunAsWait($sUserName, @ComputerName, $sPassword, 0, $sDirectory & $sFiletoRun) 
EndFunc ;==>Example 

AutoIT can be found here.는 -> 그것은 실행할 수있는 .exe 파일로 컴파일 된 .ua3 형식을 사용합니다.

1

이 스크립트는 Matt의 스크립트를 약간 수정하여 단일 스크립트 내에서 실행되도록합니다 (UAC 호출이 필요한 모든 스크립트의 시작 부분에이 코드를 추가하기 만하면됩니다).하지만 코드 아래에있는 " 당신이 볼 수있는

:: ### START UAC SCRIPT ### 

if "%2"=="firstrun" exit 
cmd /c "%0" null firstrun 

if "%1"=="skipuac" goto skipuacstart 

:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges) 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 

setlocal & pushd . 

cd /d %~dp0 
cmd /c "%0" skipuac firstrun 
cd /d %~dp0 

:skipuacstart 

if "%2"=="firstrun" exit 

:: ### END UAC SCRIPT ### 

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ### 

내 수정이 개 파일 인수를 사용, 특히 우아한 아니라 (그리고 당신은 항상 첫 번째 예약에 의해 멀리 꼬리 끝을 숨길 수있는 일을 : 블로그에서 발견했습니다 더미 자리 표시자를 사용하는 인수가 거의 없음). 또한 AFAIK Matt의 스크립트는 파일 경로의 공백을 지원하지 않으며이 제한은이 스크립트의 수정에도 적용됩니다.

이 문제는 VBS가 이러한 경로를 처리하는 방식에 내재되어있는 것처럼 보이지만 아래 링크에는 파일을 사용하여이 문제를 해결할 필요없이 단일 스크립트 내에서 실행되는 UAC를 호출하는 더 나은 VBS 기반 솔루션이 있습니다 또한 파일 경로에 공백을 지원하는 인수 :

http://pcloadletter.co.uk/2012/12/11/uac-elevation-for-batch-script/

이 링크에 스크립트는 어떤 이유로 공백으로 문제를 우회하면 알 수 있습니다으로 약간 다른 VBS 통화를합니다.

4
@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` 
+0

을 추가하십시오. 감사. – Emad

1

다음은 해결 방법입니다 :

  1. 이 .bat 파일의 바로 가기
  2. 열기 속성 바로 가기를 만듭니다. 바로 가기 탭에서 고급을 클릭하십시오..관리자로 배치 스크립트를 실행 바로 가기를 실행
  3. 틱 "관리자 권한으로 실행"

.

관련 문제