Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Excel VBA, CAD, Софт, ОС, Windows, Ubuntu, Android, VPS
Win Api, Assembler, C++, Java, Pascal, Lazarus, Delphi, OpenGL, DirectX
C#, Qt, .NET, ASP.NET, Windows Forms, ADO.NET, Framework, WPF, UWP, WinRT, XAML
HTML, CSS, JavaScript, Ajax, PHP, Perl, Python, Ruby, SQL, WordPress, API, XML, JSON, ActionScript, Flash

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

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

Код:

#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 вне форума   Ответить с цитированием
Старый 12.11.2016, 00:05   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 4,649
Репутация: 1418
По умолчанию

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

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

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить объект из реестра. 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




19:50.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru