Я запрашивая реестра для ImagePath из службы Что возвращает это:.Remove »из пути конвертируется в строку
"C:\Program Files\App\App.exe"
преобразовать что ToString в моей функции реестра и результат:
"\"C:\\Program Files (x86)\\App\App.exe\""
мне нужно затем создать FileInfo
объект и не удается из-за недопустимых символов
Как раздеть строку обратно в «C:. \ Program Files (x86) \ App \ Ap p.exe ", поэтому я могу просто указать @string в моей инициализации FileInfo
.
Легкий ответ состоит в том, чтобы не преобразовать его в строку в первую очередь, однако это изменило бы поведение моей вспомогательной функции, которая широко используется.
Код:
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.Replace. ("\" ", "");' –
Где вы видите эту строку? Я предполагаю, что вы видите это в отладчике, и на самом деле не все эти обратные косые черты. Что произойдет, если вы распечатаете его на консоли? –
Вам нужно разместить образец кода, который показывает проблему. –