Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 29

Удалить ключ в реестре

27.02.2018, 16:06. Показов 3095. Ответов 10

Студворк — интернет-сервис помощи студентам
Добрый вечер,

Помогите пожалуйста, нужно удалить ключ из HK_Local_Machine/SYSTEM/CurrentControlSet/Service дело в том что программа которую я установил пользователям, удаляется с помощью пароля который был установлен мною, но в данный момент пароль который ввожу программа выдает "не верно", Нашел на пабликах аналогичную ситуацию у одного пользователя, и он описал процедуру, как удалить ключи после чего программу можно будет удалить ручками, теперь задача: Хочу создать именно на С# код который будет удалять указанные ключи.

Порылся в инете пару часиков и выяснил вот:
C#
1
2
3
4
5
6
7
8
9
10
using Microsoft.Win32; //Пространство имен для работы с Реестром: 
RegistryKey currentUserKey = Registry.CurrentUser;
RegistryKey helloKey= currentUserKey.OpenSubKey("HelloKey", true);
// удаляем вложенный ключ
helloKey.DeleteSubKey("SubHelloKey");
// удаляем значение из ключа
helloKey.DeleteValue("login");
helloKey.Close();
// удаляем сам ключ
currentUserKey.DeleteSubKey("HelloKey");
Только вот один вопрос стоит, в данном коде он удаляет КЕЙ из HK_CURRENT_USER в корневой папке, а задача в том что мои ключи которые нужно удалить HKEY_LOCAL_MACHINE > SYSTEM > CURRENTCONTROLSET > services

Будьте добры помогите решить ...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2018, 16:06
Ответы с готовыми решениями:

Создать ключ в реестре - System.UnauthorizedAccessException
Вот такой нехитрый код. using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using...

Не видит ключ в реестре, хотя он присутствует
Привет,у меня такая проблема,я в прогамме указываю один путь,где нужно создать ключ,а программа не создает ключ,оправдываясь тем что...

Найти путь файла зная ключ в реестре
Всем привет, как найти путь к исполняемому файлу зная его месторасположение в реестре? Использую такой код: string names = new...

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
28.02.2018, 17:16
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

Dimon666,
C#
1
2
3
4
5
using (RegistryKey servicesKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CURRENTCONTROLSET\services", true))
{
    //servicesKey.DeleteKey(...);
    //servicesKey.DeleteValue(...);
}
0
0 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 29
28.02.2018, 17:26  [ТС]
Добрый вечер, Уважаемый Модератор, спасибо что ответили... Но как на скрине показано выдает ошибку ....
(Извините но я только учусь, могли бы Вы весь код прислать или, показать мою ошибку.)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using Microsoft.Win32; //Пространство имен для работы с Реестром:
 
namespace Create
{
    class Program
    {
        static void Main(string[] args)
        {
            RegistryKey localMachineKey = Registry.LocalMachine; //Указываем в какой ветке реетстра будем работать.
            using (RegistryKey servicesKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CURRENTCONTROLSET\services", true))
            {
                servicesKey.DeleteSubKey("CyServer");
                //servicesKey.DeleteValue(...);
            }
Миниатюры
Удалить ключ в реестре  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
28.02.2018, 17:30
Dimon666, количество закрывающих фигурных скобок должно совпадать с количеством открывающих
.
0
0 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 29
28.02.2018, 17:34  [ТС]
На скрин не попал и на верху в форме с# а так вот сам код который у меня.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32; //Пространство имен для работы с Реестром:
 
namespace Create
{
    class Program
    {
        static void Main(string[] args)
        {
            RegistryKey localMachineKey = Registry.LocalMachine; //Указываем в какой ветке реетстра будем работать.
            using (RegistryKey servicesKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CURRENTCONTROLSET\services", true))
            {
                servicesKey.DeleteSubKey("CyServer");
                //servicesKey.DeleteValue(...);
            }
 
        }
    }
}
0
0 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 29
28.02.2018, 17:40  [ТС]
Вот сама ошибка при запуске
Миниатюры
Удалить ключ в реестре  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
28.02.2018, 18:10
Цитата Сообщение от Dimon666 Посмотреть сообщение
Вот сама ошибка при запуске
Приложение нужно запускать с правами администратора.
1
0 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 29
01.03.2018, 08:48  [ТС]
Доброе утро,

Вот что произошло вчера,
Доменный компьютер не может удалить ключ по запросу
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32; //Пространство имен для работы с Реестром:
 
namespace Create
{
    class Program
    {
        static void Main(string[] args)
        {
            RegistryKey localMachineKey = Registry.LocalMachine; //Указываем в какой ветке реетстра будем работать.
            using (RegistryKey servicesKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CURRENTCONTROLSET\services", true))
            {
                servicesKey.DeleteSubKey("CyServer");
                //servicesKey.DeleteValue(...);
            }
 
        }
    }
}
А вот домашний ПК который вне домена с радостью удалил ключ...
На счет прав не волнуйтесь я администратор, + запускал от имени Админа тоже, дело в том что когда я выполняю вот этот код.
C#
1
2
3
4
5
6
7
8
using Microsoft.Win32; //Пространство имен для работы с Реестром:
 
RegistryKey currentUserKey = Registry.CurrentUser;
 
RegistryKey helloKey= currentUserKey.OpenSubKey("HelloKey", true);
 
 
currentUserKey.DeleteSubKey("HelloKey"); // удаляем сам ключ
То в ветке HK_Current_User/HelloKey Удаляется ключ, (Тут кстате права Администратора не нужны, обычный пользователь может создавать так же удалять ключи)
Вопрос: как мне заставить именно этот код обратиться по указанной ветке допустим: HKEY_CURRENT_USER/SOFTWARE/HelloKey что бы удалить HelloKey

C#
1
2
3
4
5
6
7
8
using Microsoft.Win32; //Пространство имен для работы с Реестром:
 
RegistryKey currentUserKey = Registry.CurrentUser;
 
RegistryKey helloKey= currentUserKey.OpenSubKey(@"SOFTWARE\HelloKey", true);
 
 
currentUserKey.DeleteSubKey("HelloKey"); // удаляем сам ключ
Пробовал так Не получается


Пожалуйста помогите(
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
01.03.2018, 15:46
Лучший ответ Сообщение было отмечено Dimon666 как решение

Решение

Цитата Сообщение от Dimon666 Посмотреть сообщение
Вопрос: как мне заставить именно этот код обратиться по указанной ветке допустим: HKEY_CURRENT_USER/SOFTWARE/HelloKey что бы удалить HelloKey
C#
1
2
3
4
5
6
7
8
using Microsoft.Win32; //Пространство имен для работы с Реестром:
 
RegistryKey currentUserKey = Registry.CurrentUser;
 
RegistryKey helloKey= currentUserKey.OpenSubKey(@"SOFTWARE\HelloKey", true);
 
 
currentUserKey.DeleteSubKey("HelloKey"); // удаляем сам ключ
Пробовал так Не получается
Таким образом ты пытаешься удалить ключ SOFTWARE\HelloKey\HelloKey. Нужно открыть ключ SOFTWARE и удалять внутри него. Причем т.к. данный ключ может перенаправляться на 64-битных машинах в SOFTWARE\Wow6432Node нужно понимать какая именно ветка нам необходимо. Делается это путем указания RegistryView. RegistryView.Registry64 обозначает ключ без перенаправления (работает и на 32-битных машинах). RegistryView.Registry32 соотвественно разрешает перенаправление (если оно применимо и необходимо в текущем контексте).
C#
1
2
3
4
5
using (var hkcu = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Registry64))
using (var softwareKey = hkcu.OpenSubKey("Software"))
{
    softwareKey.DeleteSubKey("HelloKey");
}
1
0 / 1 / 0
Регистрация: 08.05.2015
Сообщений: 29
03.03.2018, 01:00  [ТС]
СПАСИБО!!!! Большое всё работает! только сейчас проверил и разобрался с кодом, еще добавил , TRUE)) так как выдавал ошибку что не может прочитать... После чего успешно удалился, жду понедельника что бы запустить на клиентских компах, думаю проблем не выйдет с Доменными Компами ... Еще раз спасибо!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
 
            {
                using (var hkcu = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)) 
                using(var softwareKey = hkcu.OpenSubKey(@"SOFTWARE\Clients", true)) 
                {
                    softwareKey.DeleteSubKey("test");
                    //servicesKey.DeleteValue(...);
                }
 
            }
        }
    }
}
Добавлено через 1 час 2 минуты
Возник один вопросик, как если в ветке
HKLM/Software/Myprogram
Имеются много разных ключей допустим
{5643216784654432132487642154}
{55463543456456354634567642666}
{55453432167846544321324876421234}
{554635434564hdgdghdgfhdfghdfghdgh6}
и мне нужно в этих ключах вычислить какой String Value name содержит ProgTest, и удалить тот ключ содержавший String Value name ProgTest
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18288 / 14211 / 5368
Регистрация: 17.03.2014
Сообщений: 28,889
Записей в блоге: 1
03.03.2018, 02:00
Dimon666, это решается рекурсивным поиском с помощью GetSubKeyNames
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2018, 02:00
Помогаю со студенческими работами здесь

Удалить значение в реестре
Как удалить значение в : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows здесь есть AppInit_DLLs как удалить его...

Как удалить ветвь в реестре?
Всем привет! Возможно ли, удалить папку в реестре? Адрес примерно такой: HKEY_CURRENT_USER\Software\MyFolder Т.е MyFolder -...

Как удалить запись в реестре
Привет! Мне нужно удалить некоторые ветки в реестре.. Есть путь.. HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Windows...

Удалить ключ реестра
После добавления ключа, "key1" со значением "0", нужно сделать возможность его удалить, как это сделать? key...

Ключ в реестре
Хотел спросить. Как можно создать и прочитать данные из реестра типа DWORD. Я могу делать как Строковой параметр. Но что то с DWORD у меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru