C# 在c中以编程方式在注册表中创建二进制项#
我正在用c#以编程方式自动设置应用程序的dcom属性。当我通过组件服务手动更改设置时,我在注册表中看到以下条目。但我需要以编程的方式来做。 这是我在注册表中创建此项时所做的操作:C# 在c中以编程方式在注册表中创建二进制项#,c#,registry,dcom,C#,Registry,Dcom,我正在用c#以编程方式自动设置应用程序的dcom属性。当我通过组件服务手动更改设置时,我在注册表中看到以下条目。但我需要以编程的方式来做。 这是我在注册表中创建此项时所做的操作: 打开组件服务->Dcom->查找应用程序 右键单击属性->安全选项卡->启动和激活权限->自定义 ->编辑并添加内置\IIS\U IUSRs 结果如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{0
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#将上述值写入注册表,则可以使用命名空间中的
RegistryKey
类:
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,否则这将不起作用 如果您只想使用C#将上述值写入注册表,可以使用命名空间中的
RegistryKey
类:
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,否则这将不起作用 您可以使用这些方法,尤其是
SetValue
来执行此任务。使用SetValue
方法,字节[]的数组自动存储为二进制。您可以使用这些方法,尤其是SetValue
来执行此任务。使用SetValue
方法,字节[]的数组自动存储为二进制。此代码不会编译,因为十六进制文本前面没有0x。大多数有效的文本被解释为八进制数,因为它们有前导零。有关整型文字语法,请参阅。此代码将不会编译,因为十六进制文字前面没有0x。大多数有效的文本被解释为八进制数,因为它们有前导零。有关整型文字语法,请参阅。