2009-04-16 3 views
1

UAC를 사용하는 Windows Vista에서 로그온 계정을 프로그래밍 방식으로 만들고 싶습니다.Vista 사용자 계정 만들기

저는 사용자 계정을 만드는 OCX를 가지고 있으며 수년 동안 NT와 XP에서 근무했지만 지금은 Vista에서 계정을 만들 때 Access Denied로 인해 응용 프로그램이 실패합니다. 우리 고객이 UAC를 끄면 설치가 잘됩니다. 그러나 앱 구성을 마치기 전에 사용자가 UAC 및 REBOOT를 사용 중지하도록 허용해서는 안됩니다.

답변

1

Vista에서 관리자 권한으로 응용 프로그램을 실행하는 경우 작동합니까?

또한이 코드를 사용하여 상승 된 권한으로 COM 개체를 만들 수 있습니다

HRESULT __stdcall CreateElevatedComObject(HWND hwnd, REFCLSID rclsid, REFIID riid, __out IUnknown ** ppv) 
{ 
    OSVERSIONINFO ver={sizeof(ver)}; 
    if (GetVersionEx(&ver) && ver.dwMajorVersion > 5) 
    { 
     BIND_OPTS3 bo; 
     WCHAR wszCLSID[50]; 
     WCHAR wszMonikerName[300]; 

     if (StringFromGUID2(rclsid, wszCLSID, ELEMENTS(wszCLSID))) 
     { 
      HRESULT hr = StringCchPrintf(wszMonikerName, 
       ELEMENTS(wszMonikerName), 
       L"Elevation:Administrator!new:%s", 
       wszCLSID); 
      if (FAILED(hr)) 
       return hr; 
      memset(&bo, 0, sizeof(bo)); 
      bo.cbStruct = sizeof(bo); 
      bo.hwnd = hwnd; 
      bo.dwClassContext = CLSCTX_LOCAL_SERVER; 
      return CoGetObject(wszMonikerName, &bo, riid, (void **)ppv); 
     } 
     return E_FAIL; 
    } 
    else 
     return ::CoCreateInstance(rclsid,NULL,CLSCTX_ALL,riid,(void**)ppv); 
} 

UAC에서 실행

, 그것은 고도의 대화를 발표 할 예정이다. 이 객체는 dllhost에서 프로세스가 만료 될 것이지만 (전체적으로 생각할 때) 전체 관리자 권한으로 실행됩니다.

step by step guide for UAC in Vista도 확인하십시오.

+0

답장을 보내 주셔서 감사합니다. 아니요, 관리자 권한으로는 작동하지 않습니다. 현재 OCX에이 코드를 삽입 할 수 있습니까? 이것이 디아그그를 일으킬 것입니까? 이것은 웹 페이지에서 실행되는 OCX입니다. 도움 주셔서 감사합니다. – LilMoke

+0

아니요, COM 개체를 만드는 데 사용하는 일반적인 코드 대신이 코드를 실행해야합니다. IE 내부에서 실행중인 경우 권한이 실행될 때 의도적으로 권한을 삭제하기 때문에 보안 경계가 추가로 제공됩니다. –

+0

IE를 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택하면 IE가 전체 필터링되지 않은 관리자로 실행됩니다. 정상적으로 실행하면 Vista에서 IE (또는 모든 프로세스)가 실제 관리자 권한없이 실행되고, 기계의 관리자 인 경우에도 –

1

Here's another article 배포 할 때 UAC를 다루는 것에 대해. 이미 몇 가지 Vista 배포 문제를 겪었으므로 내가 말할 수있는 것은 행운입니다. :)