///////////////////////////////////////////////////////////////////////////// // // Copyright(C) 1999-2000 Microsoft Corporation all rights reserved. // // Module: migrateregistry.cpp // // Project: Windows 2000 IAS // // Description: IAS NT 4 Registry to IAS W2K MDB Migration Logic // // Author: TLP 1/13/1999 // // // Revision 02/24/2000 Moved to a separate dll // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "migrateregistry.h" ////////////////////////////////////////////////////////////////////////////// // DeleteAuthSrvService ////////////////////////////////////////////////////////////////////////////// LONG CMigrateRegistry::DeleteAuthSrvService() { LONG Result = ERROR_CAN_NOT_COMPLETE; SC_HANDLE hServiceManager; SC_HANDLE hService; if ( NULL != (hServiceManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS )) ) { if ( NULL != (hService = OpenService( hServiceManager, L"AuthSrv", SERVICE_ALL_ACCESS )) ) { DeleteService(hService); CloseServiceHandle(hService); } Result = ERROR_SUCCESS; CloseServiceHandle(hServiceManager); } return Result; } ////////////////////////////////////////////////////////////////////////////// // MigrateProviders ////////////////////////////////////////////////////////////////////////////// void CMigrateRegistry::MigrateProviders() { const int MAX_EXTENSION_DLLS_STRING_SIZE = 4096; const WCHAR AUTHSRV_KEY[] = L"SYSTEM\\CurrentControlSet" L"\\Services\\AuthSrv"; const WCHAR AUTHSRV_PROVIDERS_EXTENSION_DLL_VALUE[] = L"ExtensionDLLs"; HKEY hKeyAuthSrvParameter; LONG Result = RegOpenKeyEx( HKEY_LOCAL_MACHINE, CUtils::AUTHSRV_PARAMETERS_KEY, 0, KEY_ALL_ACCESS, &hKeyAuthSrvParameter ); if ( Result != ERROR_SUCCESS ) { _com_issue_error(HRESULT_FROM_WIN32(Result)); } BYTE szProvidersExtensionDLLs[MAX_EXTENSION_DLLS_STRING_SIZE] = ""; DWORD lSizeBuffer = MAX_EXTENSION_DLLS_STRING_SIZE; LONG ExtensionDLLResult = RegQueryValueEx( hKeyAuthSrvParameter, AUTHSRV_PROVIDERS_EXTENSION_DLL_VALUE, NULL, NULL, szProvidersExtensionDLLs, &lSizeBuffer ); RegCloseKey(hKeyAuthSrvParameter); DeleteAuthSrvService(); //ignore the result CRegKey RegKey; Result = RegKey.Open(HKEY_LOCAL_MACHINE, CUtils::SERVICES_KEY); if ( Result == ERROR_SUCCESS ) { RegKey.RecurseDeleteKey(L"AuthSrv"); //result not checked } if ( ExtensionDLLResult == ERROR_SUCCESS ) //ExtensionsDLLs to restore { HKEY hKeyAuthSrv; DWORD dwDisposition; WCHAR EmptyString[] = L""; // re-create the AuthSrv key Result = RegCreateKeyEx( HKEY_LOCAL_MACHINE, AUTHSRV_KEY, 0, EmptyString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyAuthSrv, &dwDisposition ); if ( Result != ERROR_SUCCESS ) { _com_issue_error(HRESULT_FROM_WIN32(Result)); } HKEY hKeyParameters; Result = RegCreateKeyEx( hKeyAuthSrv, L"Parameters", 0, EmptyString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyParameters, &dwDisposition ); if ( Result != ERROR_SUCCESS ) { _com_issue_error(HRESULT_FROM_WIN32(Result)); } Result = RegSetValueEx( hKeyParameters, AUTHSRV_PROVIDERS_EXTENSION_DLL_VALUE, 0, REG_MULTI_SZ, szProvidersExtensionDLLs, lSizeBuffer ); RegCloseKey(hKeyParameters); RegCloseKey(hKeyAuthSrv); } // Else no ExtensionDLL value to restore }