【发布时间】:2014-05-13 02:12:05
【问题描述】:
我正在使用 Visual Studio C++ 2008 和 2010 开发应用程序。我有一个简单的需求:我想找出符号链接(.lnk 或快捷方式)文件的目标。我已经梳理了网络以找到答案,但没有任何运气。
我可以看到 MSDN 有两个功能来创建符号链接
BOOLEAN WINAPI CreateSymbolicLink( 在 LPTSTR lpSymlinkFileName, 在 LPTSTR lpTargetFileName, 在 DWORD dwFlags );
BOOLEAN WINAPI CreateSymbolicLinkTransacted( 在 LPTSTR lpSymlinkFileName, 在 LPTSTR lpTargetFileName, 在 DWORD dwFlags, 在中处理 hTransaction );
但我看不到任何东西可以让您检索目标路径。这对我来说似乎很奇怪,因为它是符号链接文件的基本属性。该信息不会保存在文件头信息中吗?
MSDN 网站上推荐的一个建议是这样的
h = CreateFile (
path,
FILE_READ_ATTRIBUTES,
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
0,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS | FILE_ATTRIBUTE_REPARSE_POINT | FILE_FLAG_OPEN_REPARSE_POINT,
0);
DeviceIoControl (
h,
FSCTL_GET_REPARSE_POINT,
NULL,
0,
buffer,
bufferSize,
&returnedDataSize,
NULL);
但它看起来并不像 DeviceIoControl 对符号链接有意义,因为它是一个设备控制功能。反正我试了还是不行,就是buffer没变。
有没有人有这方面的经验? 任何帮助将不胜感激。
杰
【问题讨论】: