2011-02-23 75 views
1

我的需求很簡單。給定一個Windows目錄路徑,我想要的是實際的路徑。我確定這個術語是錯誤的,所以我舉了一個例子。如何使用.NET獲取Windows上的實際目錄路徑?

鑑於C:\ Documents和Settings \所有用戶該方法應顯示:

  • C:\ ProgramData上視窗7
  • C:\ Documents和Settings \所有用戶在Windows 2003上

這是因爲在Windows 7上C:\ Documents and Settings一路口引用C:\用戶C:\ Users \ All用戶是另一個路口引用C:\ ProgramData,這是實際的目錄。

所以,我的問題是什麼.NET API讓我做這一切?

謝謝。

+0

[this]的可能重複(http://stackoverflow.com/questions/2240734/c-how-to-retreive-the-target-of-a-junction-or-symlink-with-a-standard-user)或[this](http://stackoverflow.com/questions/4571622/ntfs-junctions-trouble-understanding-the-api) – adrianbanks 2011-02-23 16:16:39

+0

你是對的,但只是部分。沒有給出.NET API,儘管我可以嘗試使用P/Invoke,但這不是首選。 – mark 2011-02-23 16:27:12

+0

我同意。顯然唯一的辦法是通過P/Invoke。投票結束。 – mark 2011-02-23 22:26:10

回答

1

檢查出this code sample已經找到了一個人。

本質上,您必須通過P/Invoke使用Win32函數DeviceIoControl,將FSCTL_GET_REPARSE_POINT作爲參數dwIoControlCode

由於在CodeProject的傢伙說...

我覺得很有意思的是,.NET框架 的FileAttributes枚舉 包括值 FileAttributes.ReparsePoint但 沒有其他的內置支持 重新分析點。

沒有「本地」 .NET API要做到這一點,但是請記住,大部分的框架是就在P上的包裝/反正Invoke調用,所以你不應該害怕他們:)

相關問題