通过C#在Windows注册表中创建一个REG_NONE空值

4

我该如何在Windows注册表中创建一个空值,其类型为REG_NONE

例如,对于此键:

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枚举的文档中找到所需的帮助。

1个回答

5

[以下是我的研究结果。]

我在微软的RegistryKey.cs参考源代码中找到了我正在寻找的提示:

byte[] value = new byte[0];

具体来说,请调用 RegistryKey.SetValue,其中:

 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类型的注册表值的数据设置为非空字节数组的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接