Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2016, 22:09   #1
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию Удалить ключ из реестра

Я написал функции для создания и чтения ключа и теперь мне нужна функция для удаления. Попытался написать ее так:

Код:
#define DEFAULT_SUBKEY "Software\\MyBranch\\"

BOOL DeleteKey(char *key)
{
	HKEY hKey;

	if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
			DEFAULT_SUBKEY,
			0,
			KEY_SET_VALUE | KEY_WOW64_32KEY,
			&hKey) != ERROR_SUCCESS)
	{
		return FALSE;
	}
	else
	{
		if (RegDeleteKeyEx(hKey, key, KEY_WOW64_32KEY, 0) != ERROR_SUCCESS)
		{
			RegCloseKey(hKey);
			printf("%d\n", GetLastError());
			return FALSE;
		}
		RegCloseKey(hKey);
	}
	return TRUE;
}
Но ключ не удаляется, а в Last Error находится ошибка 6 - неверный дескриптор. В чем здесь проблема? Почему именно "неверный дескриптор", если код открытия ключа не отличается от аналогичного кода в других функциях? Для сравнения:

Код:
BOOL CreateBinKey(char *key, BYTE *value, DWORD size)
{
	HKEY hKey;

	if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
		DEFAULT_SUBKEY,
		0,
		NULL,
		REG_OPTION_NON_VOLATILE,
		KEY_WRITE,
		NULL,
		&hKey,
		NULL) != ERROR_SUCCESS)
	{
		return FALSE;	// Error
	}
	else
	{
		if (RegSetValueEx(hKey, key, 0, REG_BINARY, value, size) != ERROR_SUCCESS)
			return FALSE;
		if (RegCloseKey(hKey) != ERROR_SUCCESS)
			return FALSE;
	}
	return TRUE;
}
Приложение 32-битное, винда 64-битная, используется ветка Wow6432Node.
Aoizora вне форума Ответить с цитированием
Старый 11.11.2016, 23:05   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Судя по вашему CreateBinKey() вам надо RegDeleteValue.
Уточните, что нужно удалять.
waleri вне форума Ответить с цитированием
Старый 11.11.2016, 23:11   #3
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Судя по вашему CreateBinKey() вам надо RegDeleteValue.
Уточните, что нужно удалять.
В узле "Software\\MyBranch\\" я создал ключ xyz. Его я хочу удалить.
Aoizora вне форума Ответить с цитированием
Старый 11.11.2016, 23:13   #4
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию

Да, спасибо, RegDeleteValue помогло.
Aoizora вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить объект из реестра. foxes Общие вопросы Delphi 7 05.12.2013 13:31
Ключ реестра KolaSh Общие вопросы Delphi 7 30.05.2013 08:37
Удалить ветку из реестра -=Virus=- Общие вопросы Delphi 3 28.05.2010 16:02
изменить разрешения на папку и ключ реестра Deceased Общие вопросы Delphi 0 18.10.2008 21:47
Как удалить из реестра? AngelOfDeath Общие вопросы Delphi 9 10.04.2008 18:09