2013-06-24 2 views
3

관리자 권한으로 실행해야하는 응용 프로그램이 있습니다. UAC가 켜져 있으면 모든 것이 잘됩니다. 그러나 UAC가 꺼져 있으면 시작시 프롬프트가 표시되지 않고 (표준 사용자의 경우에도) 응용 프로그램이 제한된 권한으로 시작됩니다.UAC가없는 시스템에서 관리자 권한으로 응용 프로그램을 실행하십시오.

"runas"동사의 시작 프로세스가 작동하지 않습니다.

표시 UAC가 꺼져 있어도 관리자 권한으로 표준 UAC 로그인 대화 상자를 표시하고 실행할 수 있습니까?

업데이트 :

<?xml version="1.0" encoding="utf-8"?> 
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <assemblyIdentity version="1.1.6.0" processorArchitecture="X86" name="setup" type="win32"/> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
     <security> 
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> 
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
</asmv1:assembly> 

및 UAC가 활성화 될 때 everithing은 OK입니다 : 매니페스트가 포함되어 있습니다. 그러나 UAC가 꺼져 있으면 작동하지 않습니다.

업데이트 2 : :이 동작은 MSDN Step 6: Create and Embed an Application Manifest (UAC) (표 "마지막 사용자 행의 응용 프로그램 시작 동작"표 참조)에 설명되어 있습니다. 그래서 어떤 manifest로도이 문제를 해결할 수는 없습니다. 다른 해결책이 있습니까?

+1

이 당신이 원하는 무엇인가 :

여기에 관리자 액세스를 확인 StackOverflow의 어딘가에서 C에있는 작은 코드 샘플 ++입니까? http://stackoverflow.com/questions/2818179/how-to-force-my-net-app-to-run-as-administrator-on-windows-7 – Arie

+0

"UAC가 꺼져 있습니다"각도가 어두운 것입니다. . 그 기계의 관리자와 같은 소리는 고도가 필요한 프로그램을 전혀 가동하지 못하게하려는 것입니다. 따라서 해당 컴퓨터에서 프로그램을 실행할 수 없습니다. 이것은 고도가 없거나 관리자가 싫어할 때까지 나아지지 않습니다. 우리가 당신을 도울 수 없습니다. –

+0

@ HansPassant가 정확합니다.앱 *에 관리자 권한이 필요하며 기기에서 상승 된 앱을 실행할 수 없으면 앱을 실행할 수 없습니다. 죄송합니다. (앱에 관리자 권한이 필요한 이유는 무엇입니까?) –

답변

2

나는 매우 비슷한 문제가 있었고, 지금까지의 의견이 실제 문제를 해결하지 못했다고 생각합니다. 나는 그들이 당신의 질문의 의도를 잘못 알고 있다고 생각합니다. 첫 번째 질문에서 내 대답은 실제 UAC 대화 상자를 표시하지 않지만 해결 방법이 표시됩니다.

UAC 꺼짐 아니요은 응용 프로그램이 관리자 권한으로 실행되는 것을 방지합니다 (관리자 암호가있는 것으로 가정). 더 어렵게 만듭니다. 당신이 정당 실제로 프로세스를 상승하지 않는 장애인 매니페스트, 마우스 오른쪽 버튼으로 클릭에 requireAdministrator 세트 Run as administrator을 선택하는 UAC와 함께, 지적 마이크로 소프트는 표시로 : "Application might launch but will fail later"

두 단계 :

1) Shift 동안 보류 응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 Run as a different user을 선택하십시오. 그런 다음 관리자의 사용자 이름과 암호를 사용하여 인증하고 응용 프로그램을 관리자 권한으로 실행해야합니다. 그것은 나를 위해 일했습니다.

screenshot

2 ) 관리자 권한에 대한 asInvoker 및 검사를 실행하는 작은 실행 파일을 구축 할 수 있습니다. 그것들없이 실행되면, 사용자에게 경고하고 Shift-Right Click, 그 다음에 Run as a different user라고 알려줍니다. 소규모 프로그램에 관리자 액세스 권한이있는 경우 ShellExecute을 사용하여 기본 requireAdministrator 응용 프로그램을 호출하십시오. 흐름도는 Figure 9 here을 참조하십시오.

BOOL IsUserAdmin(VOID) 
{ 
    BOOL b; 
    SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; 
    PSID AdministratorsGroup; 
    b = AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup); 
    if(true==b) 
    { 
     if (!CheckTokenMembership(NULL, AdministratorsGroup, &b)) 
     { 
     b = FALSE; 
     } 
     FreeSid(AdministratorsGroup); 
    } 
    return(b); 
} 
관련 문제