2011-11-23 62 views
1

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

  1. 打开组件服务 - > 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 

回答

0

如果你只是想编写VA略以上使用C#注册表,您可以使用RegistryKey类的Microsoft.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 }); 

编辑:

布伦特指出,你需要前缀的每一个数字以0x或这是行不通的。

+0

由于十六进制文字没有以0x开头,因此此代码无法编译。大多数有效的文字都被解释为八进制数字,因为它们具有前导零。请参阅http://goo.gl/f3xQ2了解整数字面值语法。 –

+0

@ BrentM.Spell,你是正确的,谢谢,编辑。 –

1

您可以使用Microsoft.Win32.Registry方法,尤其是SetValue来执行此任务。使用SetValue方法,字节[]的数组会自动存储为二进制。

相关问题