簡體   English   中英

從注冊表讀取字符串值,但結果包含一些奇怪的字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM