/* * Copyright (c) 1998 Microsoft Corporation * * Module Name: * * registry.cpp * * Abstract: * * This file handles registry actions needed by License Server setup. * * Author: * * Breen Hagan (BreenH) Oct-02-98 * * Environment: * * User Mode */ #include "stdafx.h" #include "logfile.h" /* * Global variables. */ /* * Constants. */ const TCHAR gszLSParamKey[] = _T("System\\CurrentControlSet\\Services\\TermServLicensing\\Parameters"); const TCHAR gszDatabasePathValue[] = _T("DBPath"); const TCHAR gszServerRoleValue[] = _T("Role"); /* * Function prototypes. */ /* * Function implementations. */ DWORD CreateRegistrySettings( LPCTSTR pszDatabaseDirectory, DWORD dwServerRole ) { DWORD dwErr, dwDisposition; HKEY hLSParamKey; LOGMESSAGE(_T("CreateRegistrySettings: Entered with %s, %ld"), pszDatabaseDirectory, dwServerRole); dwErr = RegCreateKeyEx( HKEY_LOCAL_MACHINE, gszLSParamKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hLSParamKey, &dwDisposition ); if (dwErr != ERROR_SUCCESS) { LOGMESSAGE(_T("CreateRegistrySettings: RegCreateKeyEx: Error %ld"), dwErr); return(dwErr); } dwErr = RegSetValueEx( hLSParamKey, gszDatabasePathValue, 0, REG_EXPAND_SZ, (LPBYTE)pszDatabaseDirectory, (_tcslen(pszDatabaseDirectory) + 1) * sizeof(TCHAR) ); if (dwErr != ERROR_SUCCESS) { RegCloseKey(hLSParamKey); LOGMESSAGE(_T("CreateRegistrySettings: RegSetValueEx: %s: Error %ld"), _T("DatabasePath"), dwErr); return(dwErr); } dwErr = RegSetValueEx( hLSParamKey, gszServerRoleValue, 0, REG_DWORD, (LPBYTE)&dwServerRole, sizeof(DWORD) ); if (dwErr != ERROR_SUCCESS) { RegCloseKey(hLSParamKey); LOGMESSAGE(_T("CreateRegistrySettings: RegSetValueEx: %s: Error %ld"), _T("ServerRole"), dwErr); return(dwErr); } RegCloseKey(hLSParamKey); return(ERROR_SUCCESS); } LPCTSTR GetDatabaseDirectoryFromRegistry( VOID ) { static TCHAR pRegValue[MAX_PATH + 1]; DWORD dwErr, cbRegValue = (MAX_PATH * sizeof(TCHAR)); HKEY hLSParamKey; dwErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gszLSParamKey, 0, KEY_READ, &hLSParamKey ); if (dwErr != ERROR_SUCCESS) { return(NULL); } dwErr = RegQueryValueEx( hLSParamKey, gszDatabasePathValue, NULL, NULL, (LPBYTE)pRegValue, &cbRegValue ); if (dwErr != ERROR_SUCCESS) { return(NULL); } RegCloseKey(hLSParamKey); return(pRegValue); } DWORD GetServerRoleFromRegistry( VOID ) { DWORD dwErr, dwValue, cbValue = sizeof(DWORD); HKEY hLSParamKey; dwErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gszLSParamKey, 0, KEY_READ, &hLSParamKey ); if (dwErr != ERROR_SUCCESS) { SetLastError(dwErr); return((DWORD)-1); } dwErr = RegQueryValueEx( hLSParamKey, gszServerRoleValue, NULL, NULL, (LPBYTE)&dwValue, &cbValue ); if (dwErr != ERROR_SUCCESS) { SetLastError(dwErr); return((DWORD)-1); } RegCloseKey(hLSParamKey); return(dwValue); } DWORD RemoveRegistrySettings( VOID ) { DWORD dwErr; HKEY hLSParamKey; dwErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gszLSParamKey, 0, KEY_ALL_ACCESS, &hLSParamKey ); if (dwErr != ERROR_SUCCESS) { return(dwErr); } dwErr = RegDeleteValue( hLSParamKey, gszDatabasePathValue ); if (dwErr != ERROR_SUCCESS) { RegCloseKey(hLSParamKey); return(dwErr); } dwErr = RegDeleteValue( hLSParamKey, gszServerRoleValue ); if (dwErr != ERROR_SUCCESS) { RegCloseKey(hLSParamKey); return(dwErr); } RegCloseKey(hLSParamKey); return(ERROR_SUCCESS); }