일반 사용자가 읽을 수없는 장소 (예 : 다른 사용자의 폴더)에서 정보를 읽어야하는 스크립트가 있다고 가정합니다.UAC를 사용하여 Perl 프로세스를 향상시키는 방법
현재 내가 할 수있는 일은 "수퍼 유저"로 실행되지 않고 종료하는 것에 대해 불평하는 것입니다.하지만 스크립트 자체가 고도를 요구하는 것이 좋습니다.
일반 사용자가 읽을 수없는 장소 (예 : 다른 사용자의 폴더)에서 정보를 읽어야하는 스크립트가 있다고 가정합니다.UAC를 사용하여 Perl 프로세스를 향상시키는 방법
현재 내가 할 수있는 일은 "수퍼 유저"로 실행되지 않고 종료하는 것에 대해 불평하는 것입니다.하지만 스크립트 자체가 고도를 요구하는 것이 좋습니다.
MSDN 및 PerlMonks에 따르면, 당신은 시도 할 수 있습니다 : 필요할 때
Win32::FileOp::ShellExecute(runas => 'yourprogram.exe')
또는
이이 (테스트하지)한다Win32::FileOp::ShellExecute(runasuser => 'yourprogram.exe')
가 고도를 요청. (Windows 7에서만 작동).
관련 : Requesting Administrator privileges during runtime 바로 가기를 통해 시작과 함께 확인을 경우
, 다음을 사용할 수 있습니다
편집 바로 가기하여 Perl.exe하는 바로 가기를 만듭니다. 바로 가기 탭, 변경 "대상"에
[선택 사항] 바로 가기 탭에서 "시작 위치"를 스크립트가있는 디렉터리의 경로로 변경하십시오.
는 "runas
"라는 도구가 있습니다, 그러나 나는 그것이 관리자의 암호를 묻지 않고 작동시킬 수없는 것.
내 자신의 작업에서이 질문에 대한 좋은 대답이없는 것에 지쳐서, 나는 Win32::RunAsAdmin이라고 썼다. 그것은이하는 모든 동사로 "에서 runas"로 OLE를 통해 윈도우 셸을 호출이지만, 그래서 당신이해야 할 모든이 코드의 시작 부분에 다음과 같은 스틱되어 편리하게 패키지 : 가져 오기 동안
use Win32::RunAsAdmin qw(force);
을 단계에서 승격 된 권한을 확인하고 승격 모드에서 이미 실행중인 경우 자동으로 반환됩니다. 그렇지 않으면 UAC 팝업으로 상승 모드로 스크립트를 다시 시작합니다.
가장 간단한 해결책은 스크립트의 바로 가기를 만들고 프로세스를 관리자로 실행하도록 바로 가기를 설정하는 것입니다. – ikegami
@ikegami이 방법은 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행"을 선택하는 것과 같습니다. 불행하게도이 메뉴 옵션은 Perl 스크립트뿐만 아니라 해당 메뉴에 대한 바로 가기로 빠져 있습니다.이 메뉴 옵션은 분명히 관련 확인란이 * 비활성화 *되어 있습니다. –
'perl.exe'를 실행할 프로그램으로 지정하는 것만 큼 문제가 있습니다. 스크립트를 인수로 전달하십시오. (테스트 완료) – ikegami