2016-12-22 9 views
2

Как создать пустое значение в реестре Windows с типом REG_NONE?Создать пустое значение REG_NONE в реестре Windows с помощью C#

Например, для этого ключа:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\ 
    .htm\OpenWithProgids 

Вот значения, которые я вижу на моем Windows 7 машины:

---------------------------------------------------- 
Name   Type  Data 
---------------------------------------------------- 
(Default)  REG_SZ  (value not set) 
FirefoxHTML REG_NONE (zero-length binary value) 
htmlfile  REG_NONE (zero-length binary value) 
---------------------------------------------------- 

В частности, как я объявляю и инициализировать переменную типа «двоичное значение с нулевой длиной» для передачи его RegistryKey.SetValue? Обратите внимание, что я не смог найти помощь, которая мне нужна в документации для перечисления RegistryValueKind.

ответ

3

[Вот результат моего исследования.]

Я нашел намек, что я искал в эталонном источнике Microsoft для RegistryKey.cs:

byte[] value = new byte[0]; 

В частности, называем RegistryKey.SetValue где:

  • name присвоено имя, которое вы хотите для ключа,
  • value установлен в empty byte array, а
  • 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 
--------------------------------------------------------------- 

Связанные: См this answer и this answer примеры для того, как установить данные значения реестра типа RegistryValueKind.Binary в массив байтов в непустое.