我有一个短路径或DOS格式的路径(例如"C:/DOCUME~1"),想要获取其完整路径/长路径(例如"C:/Documents And Settings")。
我尝试了GetLongPathName api。它可以工作。但是当处理Unicode文件名时,它会出现失败。
Private Declare Function GetLongPathName Lib "kernel32" Alias _
"GetLongPathNameA" (ByVal lpszShortPath As String, _
ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long
我尝试别名GetLongPathNameW,但似乎没有效果,对于Unicode和非Unicode文件名都返回0。在MSDN中,只有关于C/C++的GetLongPathNameW文章,而没有任何关于VB/VBA的文章。我可能做错了什么吗?
这种情况有解决方案吗?我在Google和StackOverflow上花了几个小时,但找不到答案。
谢谢!
\\?\
为前缀,因此您的示例将变为\\?\C:\DOCUME~1
。 - SeanC