2009-04-16 2 views
1

Я хочу программно создать учетную запись входа в Windows Vista с включенным UAC.Создать учетную запись пользователя Vista

У меня есть OCX, который создает учетную запись пользователя и долгое время работал на NT и XP, но теперь наше приложение не работает с Access Denied при создании учетной записи в Vista. Если наши клиенты отключат 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, все, что я могу вам сказать, это удача. :)

Смежные вопросы