Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
// LogonPage.cpp : Implementation of CLogonPage
#include "stdafx.h"
#include "MainPage.h"
#include "LogonPage.h"
EXTERN_C const CLSID CLSID_LogonPage = __uuidof(CLogonPage);
/////////////////////////////////////////////////////////////////////////////
// CLogonPage
LPWSTR CLogonPage::c_aHTML[] = { L"res://nusrmgr.exe/logonpage.htm", L"res://nusrmgr.exe/logonpage_sec.htm" };
STDMETHODIMP CLogonPage::Reinitialize(ULONG /*reserved*/) { _bFriendlyUIEnabled = VARIANT_FALSE; _bMultipleUsersEnabled = VARIANT_FALSE;
CComPtr<ILocalMachine> spLocalMachine; if (SUCCEEDED(spLocalMachine.CoCreateInstance(CLSID_ShellLocalMachine))) { spLocalMachine->get_isFriendlyUIEnabled(&_bFriendlyUIEnabled); spLocalMachine->get_isMultipleUsersEnabled(&_bMultipleUsersEnabled); }
if (NULL != _pLogonTypeCheckbox) _pLogonTypeCheckbox->put_checked(_bFriendlyUIEnabled);
if (NULL != _pTSModeCheckbox) _pTSModeCheckbox->put_checked(VARIANT_FALSE == _bMultipleUsersEnabled ? VARIANT_TRUE : VARIANT_FALSE);
return S_OK; }
STDMETHODIMP CLogonPage::initPage(IDispatch* pdispLogonTypeCheckbox, IDispatch* pdispTSModeCheckbox) { ATOMICRELEASE(_pLogonTypeCheckbox); ATOMICRELEASE(_pTSModeCheckbox);
if (NULL != pdispLogonTypeCheckbox) pdispLogonTypeCheckbox->QueryInterface(&_pLogonTypeCheckbox);
if (NULL != pdispTSModeCheckbox) pdispTSModeCheckbox->QueryInterface(&_pTSModeCheckbox);
return Reinitialize(0); }
STDMETHODIMP CLogonPage::onOK() { HRESULT hr = S_OK;
VARIANT_BOOL bFriendlyUIEnabled = VARIANT_FALSE; VARIANT_BOOL bMultipleUsersDisabled = VARIANT_TRUE;
if (NULL != _pLogonTypeCheckbox) _pLogonTypeCheckbox->get_checked(&bFriendlyUIEnabled);
if (NULL != _pTSModeCheckbox) _pTSModeCheckbox->get_checked(&bMultipleUsersDisabled);
CComPtr<ILocalMachine> spLocalMachine;
if (bFriendlyUIEnabled != _bFriendlyUIEnabled) { hr = spLocalMachine.CoCreateInstance(CLSID_ShellLocalMachine); if (spLocalMachine) { hr = spLocalMachine->put_isFriendlyUIEnabled(bFriendlyUIEnabled); if (SUCCEEDED(hr)) { _bFriendlyUIEnabled = bFriendlyUIEnabled; } else { //alert(L_FriendlyUI_ErrorMessage);
} } }
if (bMultipleUsersDisabled == _bMultipleUsersEnabled) { if (!spLocalMachine) hr = spLocalMachine.CoCreateInstance(CLSID_ShellLocalMachine);
if (spLocalMachine) { hr = spLocalMachine->put_isMultipleUsersEnabled(VARIANT_FALSE == bMultipleUsersDisabled ? VARIANT_TRUE : VARIANT_FALSE); if (SUCCEEDED(hr)) { _bMultipleUsersEnabled = VARIANT_FALSE == bMultipleUsersDisabled ? VARIANT_TRUE : VARIANT_FALSE; } else { // There are 2 possible errors here. Need to check with
// VTan about what they are, then make 2 different messages.
//alert(L_MultiUser_ErrorMessage);
} } }
if (SUCCEEDED(hr)) { if (NULL != _pTaskFrame) hr = _pTaskFrame->ShowPage(CLSID_MainPage, TRUE); else hr = E_UNEXPECTED; }
return hr; }
|