Как получить фактический путь к каталогу в Windows, используя.NET?
Моя потребность проста. Учитывая путь к каталогу Windows, все, что мне нужно, это фактический путь. Я уверен, что терминология неверна, поэтому я привожу пример.
Для C:\Documents and Settings\All Users метод должен отображать:
- C: \ ProgramData на Windows 7
- C: \ Documents and Settings \ Все пользователи в Windows 2003
Это связано с тем, что в Windows 7 C: \ Documents and Settings - это соединение, ссылающееся на C: \ Users, а C: \ Users \ All Users - еще одно соединение, ссылающееся на C: \ ProgramData, которое является фактическим каталогом.
Итак, мой вопрос: что.NET API позволяет мне делать все это?
Благодарю.
1 ответ
Проверьте этот пример кода от кого-то, кто уже понял это.
По сути, вы должны использовать Win32 функцию DeviceIoControl через P/Invoke, передавая FSCTL_GET_REPARSE_POINT
как dwIoControlCode
параметр.
Как говорит парень из CodeProject...
Мне интересно, что перечисление FileAttributes в.NET Framework включает значение FileAttributes.ReparsePoint, но другой встроенной поддержки точек повторной обработки нет.
Для этого не существует "нативного" .NET API, но имейте в виду, что большая часть фреймворка в любом случае является просто оболочкой для вызовов P/Invoke, так что вы не должны их бояться:)