在c#中以编程方式在注册表中创建二进制项

本文关键字:创建 二进制 注册表 编程 方式 | 更新日期: 2023-09-27 18:15:28

我在c#中自动设置应用程序的dcom属性。当我通过组件服务手动更改设置时,我在注册表中看到以下条目。但我需要用程序来做。我是这样在注册表中创建这个条目的:

  1. Open Component Services -> Dcom ->定位应用
  2. 右键单击属性->安全选项卡->启动和激活权限->自定义->编辑并添加BuiltIn'IIS_IUSRs

结果如下:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE'SOFTWARE'Classes'AppID'{0B902D3B-6517-4EBD-B61B-6F5830A77578}]
@="TestClient.AccBkrcn"
"LaunchPermission"=hex:01,00,04,80,74,00,00,00,84,00,00,00,00,00,00,00,14,00,'
  00,00,02,00,60,00,04,00,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,'
  05,12,00,00,00,00,00,18,00,1f,00,00,00,01,02,00,00,00,00,00,05,20,00,00,00,'
  20,02,00,00,00,00,18,00,03,00,00,00,01,02,00,00,00,00,00,05,20,00,00,00,38,'
  02,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,05,04,00,00,00,01,02,'
  00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,00,05,20,00,00,'
  00,20,02,00,00

在c#中以编程方式在注册表中创建二进制项

您可以使用Microsoft.Win32。注册表方法,特别是SetValue来执行此任务。使用SetValue方法,Byte[]数组被自动存储为二进制。

如果您只是想使用c#将上面的值写入注册表,您可以使用Microsoft中的RegistryKey类。Win32名称空间:

    RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE'Classes'AppID'{0B902D3B-6517-4EBD-B61B-6F5830A77578", true);
    key.SetValue("TestClient.AccBkrcn", new byte[] { 01,00,04,80,74,00,00,00,84,00,00,00,00,00,00,00,14,00,
  00,00,02,00,60,00,04,00,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,
  05,12,00,00,00,00,00,18,00,1f,00,00,00,01,02,00,00,00,00,00,05,20,00,00,00,
  20,02,00,00,00,00,18,00,03,00,00,00,01,02,00,00,00,00,00,05,20,00,00,00,38,
  02,00,00,00,00,14,00,1f,00,00,00,01,01,00,00,00,00,00,05,04,00,00,00,01,02,
  00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,00,00,00,05,20,00,00,
  00,20,02,00,00 });
编辑:

正如Brent指出的那样,您需要在每个数字前加上0x,否则这将不起作用。