我查詢服務的ImagePath的註冊表什麼返回是:刪除」從路徑轉換成字符串
"C:\Program Files\App\App.exe"
我轉換是的ToString在我的註冊表函數,其結果是:
"\"C:\\Program Files (x86)\\App\App.exe\""
我需要再創建一個FileInfo
對象,它是由於非法字符失敗
如何剝離串回落到「C:\ Program Files文件(x86)的\軟件\鴨p.exe「,這樣我就可以簡單地在我的初始化狀態FileInfo
中聲明@string。
最簡單的答案是不首先將其轉換爲字符串,但是這會改變我廣泛使用的輔助函數的行爲。
代碼:
public static String getRegistryKeyValue(RegistryHive hiveType, String key, String value)
{
RegistryKey registryKey;
if (Environment.Is64BitOperatingSystem == true)
registryKey = RegistryKey.OpenBaseKey(hiveType, RegistryView.Registry64);
else
registryKey = RegistryKey.OpenBaseKey(hiveType, RegistryView.Registry32);
RegistryKey keyToRead = registryKey.OpenSubKey(key);
String data = "";
try
{
data = keyToRead.GetValue(value).ToString();
}
catch (Exception)
{
logger.Error("Unable to get key: " + key + " for value: " + value);
}
logger.Info("Getting registry data for: " + key + " with value: " + value + " is: " + data);
return data;
}
當我調用該方法並初始化DirectoryInfo中,它拋出一個異常「路徑中具有非法字符」。使用@或者沒有導致相同的異常。
DirectoryInfo exe = new DirectoryInfo(@exePath);
'X = x.Replace。( 」\「」, 「」)與value.Trim除去報價;' –
在哪裏你看到那個字符串?我的猜測是你在調試器中看到它,並且它並不真正包含所有反斜槓。如果將它打印到控制檯上會發生什麼? –
您需要發佈顯示問題的示例代碼。 –