176 lines
3 KiB
C
176 lines
3 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1993 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
bkprof.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Profile routines for online books program
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Ted Miller (tedm) 5-Jan-1995
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
#include "books.h"
|
||
|
|
||
|
|
||
|
//
|
||
|
// Registry key where profile values are stored.
|
||
|
//
|
||
|
PWSTR BooksProfileKeyName = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Online Books";
|
||
|
|
||
|
//
|
||
|
// Name of profile value that stores the last known location
|
||
|
// of the online books helpfile. This value varies depending
|
||
|
// on the product (workstation/server) and is set in FixupNames().
|
||
|
//
|
||
|
PWSTR BooksProfileLocation;
|
||
|
|
||
|
|
||
|
|
||
|
PWSTR
|
||
|
MyGetProfileValue(
|
||
|
IN PWSTR ValueName,
|
||
|
IN PWSTR DefaultValue
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Retreive a profile value as a unicode string.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ValueName - supplies the name of the value to be retreived.
|
||
|
|
||
|
DefaultValue - supplies the default value, which is used if
|
||
|
the given value cannot be retreived for any reason.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Pointer to the profile value. The caller can free this
|
||
|
buffer with MyFree when done with it. Note that this
|
||
|
routine always returns a valid pointer.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
LONG l;
|
||
|
DWORD Disposition;
|
||
|
WCHAR Value[128];
|
||
|
HKEY hKey;
|
||
|
DWORD DataType;
|
||
|
DWORD DataSize;
|
||
|
|
||
|
//
|
||
|
// Create the key if it does not exist.
|
||
|
//
|
||
|
l = RegCreateKeyEx(
|
||
|
HKEY_LOCAL_MACHINE,
|
||
|
BooksProfileKeyName,
|
||
|
0,
|
||
|
NULL,
|
||
|
REG_OPTION_NON_VOLATILE,
|
||
|
KEY_READ,
|
||
|
NULL,
|
||
|
&hKey,
|
||
|
&Disposition
|
||
|
);
|
||
|
|
||
|
if(l == NO_ERROR) {
|
||
|
|
||
|
DataSize = sizeof(Value);
|
||
|
|
||
|
l = RegQueryValueEx(
|
||
|
hKey,
|
||
|
ValueName,
|
||
|
NULL,
|
||
|
&DataType,
|
||
|
(LPBYTE)Value,
|
||
|
&DataSize
|
||
|
);
|
||
|
|
||
|
RegCloseKey(hKey);
|
||
|
|
||
|
if((l != NO_ERROR) || (DataType != REG_SZ)) {
|
||
|
lstrcpy(Value,DefaultValue);
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
lstrcpy(Value,DefaultValue);
|
||
|
}
|
||
|
|
||
|
return DupString(Value);
|
||
|
}
|
||
|
|
||
|
|
||
|
BOOL
|
||
|
MySetProfileValue(
|
||
|
IN PWSTR ValueName,
|
||
|
OUT PWSTR Value
|
||
|
)
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
Save a unicode string profile value.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
ValueName - supplies the name of the value to be set.
|
||
|
|
||
|
Value - supplies the value to be set.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
Boolean value indicating whether the operation succeeded.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
{
|
||
|
LONG l;
|
||
|
DWORD Disposition;
|
||
|
HKEY hKey;
|
||
|
|
||
|
//
|
||
|
// Create the key if it does not exist.
|
||
|
//
|
||
|
l = RegCreateKeyEx(
|
||
|
HKEY_LOCAL_MACHINE,
|
||
|
BooksProfileKeyName,
|
||
|
0,
|
||
|
NULL,
|
||
|
REG_OPTION_NON_VOLATILE,
|
||
|
KEY_WRITE,
|
||
|
NULL,
|
||
|
&hKey,
|
||
|
&Disposition
|
||
|
);
|
||
|
|
||
|
if(l == NO_ERROR) {
|
||
|
|
||
|
l = RegSetValueEx(
|
||
|
hKey,
|
||
|
ValueName,
|
||
|
0,
|
||
|
REG_SZ,
|
||
|
(PBYTE)Value,
|
||
|
(lstrlen(Value)+1)*sizeof(WCHAR)
|
||
|
);
|
||
|
|
||
|
RegCloseKey(hKey);
|
||
|
}
|
||
|
|
||
|
return(l == NO_ERROR);
|
||
|
}
|