Как удалить одну запись из ключа REG_MULTI_SZ, не удаляя другие записи под той же мультистрокой - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я пишу приложение для замены процесса удаления вручную, который используется моей компанией для удаления нашего экземпляра SQL.

Мне нужно иметь возможность удалить «ACT7» из мультистроки «InstalledInstances»в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server, не удаляя другие имена экземпляров SQL.

В Интернете я нашел несколько статей, в которых подробно описывается, как заменить то, что есть в Multi-string, однако они перезаписываютвсе это и так избавило бы от других имен экземпляров.

Мне нужно иметь возможность либо просто удалить «ACT7» из списка, либо скопировать все записи, кроме «ACT7», и создать ключ замены столько эти значения.

Это первое приложение, которое я написал, и это последний ключ, который мне нужно изменить.Любая помощь будет потрясающей.

1 Ответ

1 голос
/ 21 мая 2019

A REG_MULTI_SZ значение логически является одним значением;единственный способ удалить его части - это заменить его полностью.

const string instanceKey = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server";
const string instanceName = "ACT7";

List<string> instances = 
    (
        (string[]) Registry.GetValue(instanceKey, "InstalledInstances", new string[] {})
    ).ToList();

if (instances.Remove(instanceName)) {
    Registry.SetValue(instanceKey, "InstalledInstances", instances.ToArray());
}

Обратите внимание, что это не должно использоваться в качестве общего способа удаления экземпляров SQL Server.Наличие «процесса удаления вручную» для SQL Server, в отличие от собственной настройки SQL Server (с /ACTION=UNINSTALL), требует дальнейших действий, если ручной процесс не удаляет абсолютно все необходимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...