文件本身不能自己工作。具体的打开的处理是在文件类型关联的程序里面。对于lnk这个扩展名,关联的处理程序是资源管理器。打开的时候会根据里面保存的路径或者PIDL来解析,如果解析成功,那么打开目标,如果解析不成功,首先会调用Distributed Link Tracking and Object Identifiers来查找目标的可能移动的位置(如果是在NTFS 5.0文件系统之间移动的话),找不到的话,其次会根据lnk文件里面保存的文件特征去查找目标的所在目录。还是找不到的话就开始在桌面上和文件系统里到处翻了(
IShellLink::Resolve method
)。应用程序可以创建一个CLSID_ShellLink对象,用其IShellLink接口来设置属性,然后用IPersistStream或者IPersistFile来保存。要打开一个lnk文件的话,需要创建一个CLSID_ShellLink对象,然后用其IPersistFile接口加载文件数据,然后用其IShellLink接口来读取数据。