2012-09-17 2 views
3

승격 된 권한이있는 Windows 8에서 자동으로 실행해야하는 응용 프로그램이 있습니다. requestedExecutionLevel의 requireAdministrator 특성을 포함하는 매니페스트가 포함되어 있으며 마우스 클릭으로 실행할 때 제대로 작동하지만 응용 프로그램을 자동으로 실행해야합니다.Windows 8에서 관리자 권한이 필요한 응용 프로그램을 자동으로 실행하는 방법

Vista 및 Windows 7에서는 정상적으로 작동하지만 Windows 8에서는 정상적으로 작동하지 않습니다. 단지 실행되지 않습니다. 실행하고 사용자에게 허가를 요청하는 방법은 무엇입니까?

건배

답변

4

나는이에 테스트 할 수있는 윈도우 8 설치를 필요는 없지만, (당신이 매니페스트를 사용 할 수 없습니다) 배포 한 번 클릭으로 관리자 권한을 필요로 할 때 나는 비슷한 문제가 발생 .

관리자가 실행 중이거나 실행 중이 아닌 응용 프로그램이 관리자로 실행 중이면 응용 프로그램에서 확인을 수행하도록하여 해결합니다. 관리자가 아닌 경우 관리자로 다시 시작됩니다.

public static bool IsRunningAsAdministrator() 
{ 
    var wi = WindowsIdentity.GetCurrent(); 
    var wp = new WindowsPrincipal(wi); 

    return wp.IsInRole(WindowsBuiltInRole.Administrator); 
} 

public static void StartAsAdmin(StartupEventArgs e) 
{ 
    if (IsRunningAsAdministrator()) 
     return; 

    // It is not possible to launch a ClickOnce app as administrator directly, so instead we launch the app as administrator in a new process. 
    var processInfo = new ProcessStartInfo(Assembly.GetEntryAssembly().CodeBase); 

    // The following properties run the new process as administrator 
    processInfo.UseShellExecute = true; 
    processInfo.Verb = "runas"; 

    // Start the new process 
    Process.Start(processInfo); 

    // Shut down the current process 
    Application.Current.Shutdown(); 
} 

업데이트 기계의 많은에 테스트 후 : 여기

내가 사용하는 것이 (약간 수정) 코드입니다 나는이 솔루션을 마주하는 하나의 문제는 안티 ​​바이러스 소프트웨어는 종종 볼 수 있다는 것입니다 이것은 의심스러운 행동으로 시작을 차단합니다.

설치 프로그램 + 자동 업데이트를 한 번 클릭에서 WiX Toolset + NAppUpdate으로 변경하고 대신 requestedExecutionLevel="requireAdministrator"을 실행했습니다.

3

자동으로 실행하려면 응용 프로그램이 필요합니다.

"자동 실행"이란 의미가 확실하지 않지만 사용자가 로그인하거나 특정 시간에 또는 다른 트리거 조건이 충족 될 때 응용 프로그램을 실행한다고 가정합니다. 이 작업을 수행하기 위해 작업 스케줄러를 사용할 수 있습니다. 사용자에게 관리 권한이있는 경우 작업 스케줄러에 "가장 높은"권한으로 응용 프로그램을 실행하도록 요청할 수 있습니다. 작업 스케줄러가 함께 실행에도 불구하고 해당 작업을 실행할 때 더 UAC 프롬프트가 사용자에게 표시되지 않도록

Task properties

참고 :이 작업의 속성에서 "가장 높은 수준의 권한으로 실행"을 확인하기 위해해야 ​​할 일 관리자 권한.

관련 문제