![](/img/trans.png)
[英]using queue to get some characters from input string. return value is weird
[英]Read string value from registry but the result contains some weird characters
我正在使用Registry.GetValue
從Registry讀取字符串值,返回的結果似乎包含一些“不可見”字符,這些字符在Registry Editor中看不到。
例如, Registry.GetValue
返回"London\\0j"
但我希望它只是"London"
,在注冊表編輯器中,我只能看到值"London"
並且結尾似乎沒有任何內容。串。 如果我將此密鑰導出到.reg文件,則它也僅顯示"London"
。 我沒有寫注冊表的權限,因此無法通過導入.reg文件進行測試。
將String.Trim
應用於結果也不起作用。
這是什么"\\0j"
?
編輯:讀取鍵值的代碼
var registryValue =
Registry.GetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\\CurrentControlSet\\Services\\Netlogon\\Parameters",
"DynamicSiteName", String.Empty);
導出的.reg文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
"DynamicSiteName"="London"
如您在參考源中所見, GetValue
使用RegQueryValueEx
從注冊表中讀取完整的值。
然后,根據RegQueryValueEx
返回(作為輸出參數)的注冊表類型,將此數據轉換為目標C#類型。
因此,您所看到的是真正寫入注冊表的內容。 您不會在regedit中看到\\0j
,因為此工具是使用零終止字符串實現的。 因此regedit“認為”字符串以\\0
結尾並且不顯示它。
但是由於GetValue
讀取的是實際內容 ,因此您的輸出是正確的。 C#不使用\\0
作為字符串終止字符。
當然,我不能告訴您是誰將此數據寫入注冊表的,以及這是否有效。 (實際上,它可能被某個應用程序用作某種奇怪的隱藏信息,以驗證該應用程序是否寫入了該值)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.