Вопрос про реестр
Подскажите, пожалуйста, как можно (если можно) программно изменить значение параметра "(По умолчанию)" в каком-либо разделе реестра.
Вот что по этому вопросу написано в MSDN (выделено):
RegSetValueEx
The RegSetValueEx function sets the data and type of a specified value under a registry key.
LONG RegSetValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
DWORD Reserved, // reserved
DWORD dwType, // value type
CONST BYTE *lpData, // value data
DWORD cbData // size of value data
);
Parameters
hKey
{in} Handle to a currently open key or any of the following predefined reserved handle values:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT/2000: HKEY_PERFORMANCE_DATA
Windows 95/98: HKEY_DYN_DATA
lpValueName
{in} Pointer to a string containing the name of the value to set. If a value with this name is not already present in the key, the function adds it to the key.
[SIZE=2]If lpValueName is NULL or an empty string, "", the function sets the type and data for the key's unnamed or default value.[/SIZE]
Windows 95/98: On Windows 95, the type of a key's default value is always REG_SZ, so the dwType parameter must specify REG_SZ for an unnamed value. On Windows 98, an unnamed value can be of any type.
Windows NT/2000: Registry keys do not have default values, but they can have one unnamed value, which can be of any type.
... Остальная часть хелпа поскипана.
Reg->RootKey=HKEY_LOCAL_MACHINE; //Назначим корневой каталог
if(Reg->OpenKey("SOFTWARE",true)) //Назначим подкаталог
{
Reg->OpenKey("Microsoft",true); //Назначим подкаталог
Reg->OpenKey("Windows",true); //Назначим подкаталог
Reg->OpenKey("CurrentVersion",true); //Назначим подкаталог
Reg->OpenKey("Run",true); //Назначим подкаталог
TStringList *Parameters=new TStringList;
Reg->GetValueNames(Parameters); //Выведем в список параметров подкаталога
for(int i=0;i<Parameters->Count;i++)
{
Reg->DeleteValue(Parameters->Strings); //Удаляем параметр
}
Reg->WriteString("nnn","nnn.exe"); //Добавим параметр со значением
}
else
{
ShowMessage("Раздел SOFTWARE в HKEY_LOCAL_MACHINE не найден");
}
delete Reg;
Всё работает.