Создать учетную запись пользователя Vista - PullRequest
1 голос
/ 17 апреля 2009

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

У меня есть OCX, который создает учетную запись пользователя, и он работал в течение многих лет на NT и XP, но теперь наше приложение не работает с Access Denied при создании учетной записи в Vista. Если наши клиенты отключают UAC, тогда настройте это приложение, оно будет работать нормально. Однако недопустимо, чтобы наши пользователи отключали UAC и перезагружали перед завершением настройки нашего приложения.

Ответы [ 2 ]

1 голос
/ 17 апреля 2009

Вот еще одна статья о работе с UAC при развертывании. Уже пройдя через некоторые проблемы с развертыванием Vista, все, что я могу вам сказать, это удача. :)

1 голос
/ 17 апреля 2009

Если вы запускаете ваше приложение с правами администратора в 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 (я думаю), но с полными правами администратора.

Также посмотрите пошаговое руководство по для UAC в Vista .

...