windows-nt/Source/XPSP1/NT/termsrv/license/tlserver/setup/registry.cpp
2020-09-26 16:20:57 +08:00

224 lines
4.7 KiB
C++

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