Csharp/C#教程:在二进制值中将Stringformated Hex块写入注册表分享


在二进制值中将Stringformated Hex块写入注册表

我真的被某事搞定了。 我有一个包含hex值的字符串:

string creatorSid = @“01,05,00,00,00,00,00,05,15,00,00,00,10,b1,9d,4a,7a,85,7b,05,79,05,b3 ,7c中,EE,03,00,00″ ;

我想把它放到需要二进制值的registrykey中。

我试过这个:

key.SetValue(“creatorSID”,creatorSid,RegistryValueKind.Binary);

但是我收到了无法转换的错误消息。

到目前为止,这是完整的代码:

class Program { static void Main(string[] args) { String printerName = "Naked"; RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEMCurrentControlSetControlPrintPrinters" + printerName , true); string security = "01,00,0c,80,d0,00,00,00,dc,00,00,00,00,00,00,00,14,00,00,00,02," + "00,bc,00,07,00,00,00,00,00,24,00,0c,00,0f,00,01,05,00,00,00,00,00,05,15,00," + "00,00,10,b1,9d,4a,7a,85,7b,05,79,05,b3,7c,ee,03,00,00,00,09,24,00,30,00,0f," + "00,01,05,00,00,00,00,00,05,15,00,00,00,10,b1,9d,4a,7a,85,7b,05,79,05,b3,7c," + "ee,03,00,00,00,09,14,00,00,00,00,10,01,01,00,00,00,00,00,03,00,00,00,00,00," + "00,14,00,08,00,02,00,01,01,00,00,00,00,00,01,00,00,00,00,00,0a,14,00,00,00," + "00,20,01,01,00,00,00,00,00,01,00,00,00,00,00,00,18,00,0c,00,0f,00,01,02,00," + "00,00,00,00,05,20,00,00,00,20,02,00,00,00,0b,18,00,00,00,00,10,01,02,00,00," + "00,00,00,05,20,00,00,00,20,02,00,00,01,01,00,00,00,00,00,05,12,00,00,00,01," + "01,00,00,00,00,00,05,12,00,00,00"; var data = Encoding.Unicode.GetBytes(security); try { key.SetValue("Security", data, RegistryValueKind.Binary); } catch (Exception exc) { Console.WriteLine(exc.Message); Console.WriteLine(exc.StackTrace); } } } 

它现在正在编写条目,但值已更改。 如果我检查钥匙,其中有“30 00 31 00 …..”。 但必须是:“01 00 0c 80 …..”(必须是字符串中的值)

当你有字符串时,你必须使用RegistryValueKind.String

 key.SetValue("creatorSID", creatorSid , RegistryValueKind.String); 

如果你需要使用RegistryValueKind.Binary ,你需要将string转换为byte[]并将其存储为byte[]

存储值:

 var data = Encoding.Unicode.GetBytes(creatorSid); key.SetValue("creatorSID", data, RegistryValueKind.Binary); 

要获得价值:

 var data = (byte[])key.GetValue("creatorSID"); if (data != null) { string creatorSID = Encoding.Unicode.GetString(data); } 

RegistryKey.SetValue

编辑:似乎你不需要将字符转换为字节。 请尝试以下方法。

存储值:

 var data = security.Split(',') .Select(x => Convert.ToByte(x, 16)) .ToArray(); key.SetValue("creatorSID", data, RegistryValueKind.Binary); 

要获得价值:

上述就是C#学习教程:在二进制值中将Stringformated Hex块写入注册表分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var data = (byte[])key.GetValue("creatorSID"); if (data != null) { string creatorSID = string.Join(",", data.Select(x => x.ToString("x2")).ToArray()); } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1014764.html

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐