// 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 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 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; }