Как получить фактический путь к каталогу в Windows, используя .NET? - PullRequest
1 голос
/ 23 февраля 2011

Моя потребность проста. Учитывая путь к каталогу 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 Ответ

1 голос
/ 23 февраля 2011

Проверьте этот пример кода от кого-то, кто уже понял это.

По сути, вы должны использовать функцию Win32 DeviceIoControl через передачу P / InvokeFSCTL_GET_REPARSE_POINT в качестве параметра dwIoControlCode.

Как говорит парень из CodeProject ...

Мне интересно, что перечисление FileAttributes .NET Framework включает значение FileAttributes.ReparsePoint, но нет другой встроенной поддержки Reparse Points.

Не существует «нативного» .NET API для этого, но имейте в виду, что большая часть инфраструктуры является просто оболочкойв любом случае, вокруг P / Invoke, так что не стоит их бояться:)

...