2012-06-13 2 views
3

일반 사용자가 읽을 수없는 장소 (예 : 다른 사용자의 폴더)에서 정보를 읽어야하는 스크립트가 있다고 가정합니다.UAC를 사용하여 Perl 프로세스를 향상시키는 방법

현재 내가 할 수있는 일은 "수퍼 유저"로 실행되지 않고 종료하는 것에 대해 불평하는 것입니다.하지만 스크립트 자체가 고도를 요구하는 것이 좋습니다.

+0

가장 간단한 해결책은 스크립트의 바로 가기를 만들고 프로세스를 관리자로 실행하도록 바로 가기를 설정하는 것입니다. – ikegami

+0

@ikegami이 방법은 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행"을 선택하는 것과 같습니다. 불행하게도이 메뉴 옵션은 Perl 스크립트뿐만 아니라 해당 메뉴에 대한 바로 가기로 빠져 있습니다.이 메뉴 옵션은 분명히 관련 확인란이 * 비활성화 *되어 있습니다. –

+0

'perl.exe'를 실행할 프로그램으로 지정하는 것만 큼 문제가 있습니다. 스크립트를 인수로 전달하십시오. (테스트 완료) – ikegami

답변

3

MSDNPerlMonks에 따르면, 당신은 시도 할 수 있습니다 : 필요할 때

Win32::FileOp::ShellExecute(runas => 'yourprogram.exe') 

또는

이이 (테스트하지)한다
Win32::FileOp::ShellExecute(runasuser => 'yourprogram.exe') 

가 고도를 요청. (Windows 7에서만 작동).

관련 : Requesting Administrator privileges during runtime 바로 가기를 통해 시작과 함께 확인을 경우

2

, 다음을 사용할 수 있습니다

  1. 편집 바로 가기하여 Perl.exe하는 바로 가기를 만듭니다. 바로 가기 탭, 변경 "대상"에

    1. "C : ... \ 빈 \를하여 Perl.exe"

      에 "C : ... \ script.pl"

    2. [선택 사항] 바로 가기 탭에서 "시작 위치"를 스크립트가있는 디렉터리의 경로로 변경하십시오.

    3. 바로 가기 탭에서 "고급"을 클릭 한 다음 "관리자 권한으로 실행"을 선택하십시오.

는 "runas"라는 도구가 있습니다, 그러나 나는 그것이 관리자의 암호를 묻지 않고 작동시킬 수없는 것.

1

내 자신의 작업에서이 질문에 대한 좋은 대답이없는 것에 지쳐서, 나는 Win32::RunAsAdmin이라고 썼다. 그것은이하는 모든 동사로 "에서 runas"로 OLE를 통해 윈도우 셸을 호출이지만, 그래서 당신이해야 할 모든이 코드의 시작 부분에 다음과 같은 스틱되어 편리하게 패키지 : 가져 오기 동안

use Win32::RunAsAdmin qw(force); 

을 단계에서 승격 된 권한을 확인하고 승격 모드에서 이미 실행중인 경우 자동으로 반환됩니다. 그렇지 않으면 UAC 팝업으로 상승 모드로 스크립트를 다시 시작합니다.