如何使用.NET获取Windows上的实际目录路径?
我的需求很简单。给定一个 Windows 目录路径,我想要的只是实际路径。我确信术语是错误的,所以我举一个例子。
给定 C:\Documents and Settings\All Users,该方法应显示:
- C:\ProgramData on windows 7
- C:\Documents and Settings\All Users在 Windows 2003 上
这是因为在 Windows 7 上 C:\Documents and Settings 是引用 C:\Users 和 C:\Users\All Users 的连接 是另一个引用 C:\ProgramData 的连接,这是实际的目录。
所以,我的问题是 .NET API 可以让我完成这一切吗?
谢谢。
My need is simple. Given a Windows directory path all I want is the actual path. I am sure the terminology is wrong, so I am giving an example.
Given C:\Documents and Settings\All Users the method should display:
- C:\ProgramData on windows 7
- C:\Documents and Settings\All Users on windows 2003
This is because on windows 7 C:\Documents and Settings is a junction referencing C:\Users and C:\Users\All Users is yet another junction referencing C:\ProgramData, which is the actual directory.
So, my question is what .NET API lets me do all this?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请查看已经弄清楚的人的此代码示例。
本质上,您必须使用 Win32 函数 DeviceIoControl< /a> 通过 P/Invoke 将
FSCTL_GET_REPARSE_POINT
作为dwIoControlCode
参数传递。正如 CodeProject 上的人所说......
没有“本机”.NET API 可以执行此操作,但请记住,框架的大部分内容只是 P/Invoke 调用的包装器,因此您不必担心它们:)
Check out this code sample from someone who has figured it out already.
Essentially, you have to use the Win32 function DeviceIoControl via P/Invoke passing the
FSCTL_GET_REPARSE_POINT
as thedwIoControlCode
parameter.As the guy on CodeProject says...
There is no "native" .NET API to do this, but bear in mind that much of the framework is just a wrapper around P/Invoke calls anyway, so you shouldn't fear them :)