2010-12-03 3 views
1

관리자 권한이 필요한 사용자 지정 작업이 포함 된 wix를 사용하여 설치 프로그램을 빌드했습니다.UAC 프롬프트가 허용되지만 승격되지 않음 (사용자 지정 작업)

이 설치 프로그램은 buildin 관리자 계정에 의해 실행될 때만 작동합니다. 이 경우 UAC 프롬프트가 표시되지 않습니다.
설치 프로그램이 로컬 관리자 그룹의 다른 구성원에 의해 실행되면 UAC 프롬프트가 표시됩니다. 비록 내 컴퓨터에 변경을 할 수 있지만 내 사용자 지정 작업의 Windows API 함수는 "누락 된 권한"과 같은 오류를 반환합니다 ...

사용자 지정 작업을 지연 실행하도록 시도했지만이 도움이되지 않았습니다.

아이디어가 부족하여 도움을받을 수 있습니다.

감사 랄프

답변

1

으로 msidbCustomActionTypeNoImpersonate 플래그와 함께 사용자 지정 작업을 실행 해보십시오 (로 가장을 "아니오") : http://msdn.microsoft.com/en-us/library/aa368069(VS.85).aspx

가 모든 권한을 가진 로컬 시스템 계정에서 실행됩니다 이런 식으로 . 이 플래그를 사용하려면 귀하의 행동을 연기해야합니다.

1

제가 알고있는 한 설치 스크립트는 LocalSystem 계정에 의해 실행됩니다. 보이는 것처럼 (http://msdn.microsoft.com/en-us/library/ms684190)이 계정에서는 몇 가지 권한을 사용할 수 없습니다. 예를 들어 SE_BACKUP_NAME이 (가) DISABLED이고이 것은 LoadUserProfile을 호출하는 데 필요합니다.

나는 AdjustTokenPrivileges API 함수로 이미 실험했지만 성공하지 못했습니다. LocalSystem 계정에 TOKEN_ADJUST_PRIVILEGES이 있습니까? 관련된 SE_XXXXXX_NAME 권한을 알지 못합니다.

감사 랄프

1

내가 발견이 솔루션은 내가 사용자가 적절한 권한이없는 경우 UAC를 묻는 메시지가 표시됩니다 부트 스트 래퍼 내 설치를 합병했다.

이 방법을 사용하지 않으려면이 코드가 도움이 될 수 있습니다.

공용 static ActionResult의 CheckPrivileges (세션 세션) {

 bool isadmin = false; 

     System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent(); 
     System.Security.Principal.WindowsPrincipal wp = new System.Security.Principal.WindowsPrincipal(wi); 

     if (wp.IsInRole("Administrators")) 
      isadmin = true; 
     else 
      isadmin = false; 

     if (isadmin) 
     { 
      return ActionResult.Success; 
     } 
     else 
     { 
      if (System.Environment.OSVersion.Version.Major >= 6) // Windows Vista or higher 
       MessageBox.Show("Administrator priveleges are required to install the application. Please right click the setup file and select 'Run as administrator'.", "Mesaage", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      else 
       MessageBox.Show("Administrator priveleges are required to install the application.", "Mesaage", MessageBoxButtons.OK, MessageBoxIcon.Error); 

      return ActionResult.Failure; 
     } 
    } 
관련 문제