首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

FindFirstFile 回来3 找不到指定路径

2013-03-16 
FindFirstFile返回3找不到指定路径windows7系统,第一步,用FindFirstFile和FindNextFile函数找到C:\program

FindFirstFile 返回3 找不到指定路径
windows7系统,第一步,用FindFirstFile和FindNextFile函数找到C:\program files\Windows NT目录下有三个文件,Accessories,TableTextService,和附件,三个都是目录;第二步,寻找C:\program files\Windows NT\附件 下的所有文件,却发生错误,GetLastError()返回3,找不到指定的路径,C:\program files\Windows NT\附件这个文件  是第一步用api找出来的,为什么会找不到路径呢。
在资源管理器中可以看见 “C:\program files\Windows NT\附件” 这个文件夹,是个隐藏文件,还是个快捷方式,但是双击打开却发生错误 “引用了一个不可用的位置”  望高手详解
[解决办法]
应该是快捷方式的话,就不能使用个函数?
[解决办法]
存在文件:
C:\program files\Windows NT\附件.lnk
而不存在文件夹:
C:\program files\Windows NT\附件
你要在这个不存在的文件夹内搜索,那不返回错误才怪。
至于你说的“引用了一个不可用的位置”跟这个返回错误就没关系。
[解决办法]
快捷方式是Shell的功能,也就是必须用Windows Shell函数才能解析。用Windows API是不行的。
所以这个快捷方式对于Windows API来说只是一个文件,文件是不存在之下的文件的。发生错误就是你把一个文件而不是目录设定为查找的目录了。
[解决办法]
之所以不让列它的目录,可能是微软考虑重解析点的性质,如果你打开Read权限,那么好奇的人去打开这个目录的时候,会看到Accessories的内容,不了解的人或者第三方磁盘清理工具可能会误以为是重复存放的文件,而删除里面的文件。那样的话,Accessories里的东西就被删除了。既然是Fix就把它保护起来,避免人们乱碰。NTFS的Junction类似Linux里的符号链接。
[解决办法]

引用:
所以现在的Windows加入了一个重解析点,把所有C:\program files\Windows NT\附件\WORDPAD.EXE这样的路径都解析为C:\program files\Windows NT\Accessories\WORDPAD.EXE。

Windows XP 中部分文件夹使用了本机语言的名称,但内部还是通过 desktop.ini 来实现。如我的文档、图片收藏,实际上文件夹名为 My Documents 和 My Pictures。你自己也可以这样来让文件夹显示为一个与实际文件夹名称不符的显示名称。但 Windows XP 中仍存在大量的本机语言名称的文件夹名,如“桌面”、“「开始」菜单”等。在 Windows 7 中,完全没有了像“桌面”、“「开始」菜单”这样的文件夹名(真实名称),都使用 desktop.ini 来实现的。所以你看到的“附件”只是一个显示名称,这个文件夹真是名以及你在资源管理器路径中(切换为手动编辑路径,如果为新式按钮样式的路径地址栏,也是显示“附件”)看到的依然是 Accessories,并不是你说的解析为“Accessories”。如果你用文件查找,查到的是 Accessories,二用 SHGetFileInfo 获得的名称是“附件”显示名称。

热点排行