Ответ 1
[Вот результат моих исследований.]
Я нашел подсказку, которую я искал в справочном источнике Microsoft для RegistryKey.cs:
byte[] value = new byte[0];
В частности, вызовите RegistryKey.SetValue, где:
-
name
задано имя, которое вы хотите для ключа, -
value
установлен в пустой массив байтов и -
valueKind
установлен в RegistryValueKind.None.
using Microsoft.Win32;
RegistryKey key; // set via 'CreateSubKey' or 'OpenSubKey'
key.SetValue("KeyName", new byte[0], RegistryValueKind.None);
Однако обратите внимание, что, по крайней мере, для значений, отображаемых в ключе OpenWithProgids
, Windows также воспринимает пустые значения строк как эквивалентные:
key.SetValue("KeyName", string.Empty, RegistryValueKind.String);
Например, для этого ключа:
HKEY_CLASSES_ROOT\.vcxproj\OpenWithProgids
Вот значения, которые я вижу на моей машине:
---------------------------------------------------------------
Name Type Data
---------------------------------------------------------------
(Default) REG_SZ (value not set)
Expression.Blend.vcsproj.12.0 REG_SZ
VisualStudio.Launcher.vcxproj.10.0 REG_SZ
VisualStudio.Launcher.vcxproj.12.0 REG_SZ
VisualStudio.vcxproj.10.0 REG_SZ
VisualStudio.vcxproj.12.0 REG_SZ
---------------------------------------------------------------
Связанный: См. этот ответ и этот ответ для примеров того, как для установки данных значения реестра типа RegistryValueKind.Binary
для непустого байтового массива.