2014-10-30 2 views
1

관리자 권한이 필요한 첫 번째 박쥐 파일이 있으므로 사용자가 "관리자 권한으로"실행하면 내 두 번째 박쥐 파일에 관리자 권한이 없어야합니다 (&에서 끌어 야합니다. 탐침).박쥐 파일에서 높은 권한을 삭제할 수 없습니다.

다음 명령으로 첫 번째 파일에서 두 번째 bat 파일을 열려고 시도했지만 처음으로 관리자로 시작한 경우 &을 두 번째 파일로 끌어 놓을 수 없습니다.

runas /trustlevel:0x20000 "cmd /C %~dp0upload.bat" 

내가 그렇게 할 수있는 방법

%~dp0upload.bat 

?

UPDATE : 전체 코드는

@echo off &setlocal 
if not exist "MyFolder" GOTO :prog 
runas /trustlevel:0x20000 "cmd /C %~dp0upload.bat" 
exit /B 

:prog 
more code..... 
exit 

업데이트 2 :

runas /trustlevel:0x20000 "call %~dp0upload.bat" 

을 사용하여 다른 시도

언급 here

같은 오류가 발생합니다

UPDATE 3 :

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

가 지금은에 !given_name! 전달해야합니다

확인하여 VBS, 나는 일반 사용자로 거기에서 내가 사용 높은 권한을 가진 다른 박쥐를 호출 첫번째 배치를 열 관리 두 번째 박쥐 파일하지만 그것을 전달하는 방법과 그 두 번째 박쥐에서 검색하는 방법을 잘 모르겠습니다.

답변

1

보안 위험을 피하기 위해 의도적으로 설계된 동작입니다.
Can't drag programs into cmd window
그러나 귀하의 경우에 당신이 privilegs 제거로, 약간 paranoic 것 같다 ...

하지만 아마 당신은 고도의 순서를 변경할 수 있습니다.
끌어서 & 끌어서 작업에 대한 비 균등 배치를 시작할 수 있으며이 배치는 권한 상승 방법 중 하나를 사용하여 상승 된 배치 파일을 시작합니다.

변수 (given_name) 전송에 대한 질문.

변경 "ELEV & !given_name!"에서 "!given_name!"으로 변경하려면 %1 temp.bat에서 액세스 할 수 있습니다.

SO: How can I auto-elevate my batch file...

+0

문제는 사용자가 관리자 암호가 없을 수 있습니다 사용자가 모든 시간 차이가 있다는 것입니다. 그래서 그들은 패스워드가 필요없는 첫 번째 배치를 "관리자 권한으로 실행"해야합니다. 마지막으로 두 파일의 연결을 해제하여 내 사용자가 첫 번째 박쥐를 한 번만 시작하고 (관리자로 실행) 다른 모든 시간은 두 번째 박쥐 만 시작합니다 (관리자로 실행하지 않음). – remyremy

+0

@remyremy 권한 상승 스크립트에 관리자 비밀번호가 필요하지 않습니다. ("일반"사용자의 경우) uac 메시지 상자를 클릭하기 만하면됩니다. – jeb

+0

감사합니다. 이제'! given_name!'을 두 번째 bat 파일에 전달해야하지만 전달 방법과 두 번째 배트에서 검색하는 방법을 모르겠습니다.내 질문을 업데이트했습니다. – remyremy

관련 문제