win7(64位)下的某些文件,用VB6开发的程序无法判断是否存在
2014-01-20 22:34
246 查看
我用VB6开发的程序,想在WIN7(64位)上运行,其中有个功能是查找WIN7(64位)系统目录下的某个文件是否存在。
结果发现,那个文件确实存在,但程序就是提示找不到文件,同样的程序在XP下运行没有问题。
假如WIN7的系统目录是 C:\Windows\system32,这里面一定有desktop.ini与kernel32.dll这2个文件,
我用如下VB代码判断这2个文件是否存在
Private Sub Command1_Click()
Dim fs As New FileSystemObject
If fs.FileExists("c:\windows\system32\kernel32.dll") Then
MsgBox "kernel32.dll文件存在"
Else
MsgBox "文件不存在"
End If
End Sub
Private Sub Command2_Click()
Dim fs As New FileSystemObject
If fs.FileExists("c:\windows\system32\desktop.ini") Then
MsgBox "文件存在"
Else
MsgBox "desktop.ini文件不存在"
End If
End Sub
结果提示desktop.ini不存在,kernel32.dll存在
我也选了以兼容模式运行这个VB程序,也选了以管理员身份运行。
如果我把那个desktop.ini文件放在其它地方,例如 D:\Test下,再判断是否存在,就能准确判断出是否存在。
我怀疑是WIN7的安全问题,控制了一些程序不让访问系统目录下的某些文件。不知道如何解决。
有人说desktop.ini 是隐藏的,但若你在system32下建立一个非隐藏的文件,再用vb的函数判断那个文件是否存在,也是找不到那个文件的.
这个问题我问了好几天,没有满意的答复,不过今天似乎有个答复不错,好象解决了我的问题.
答复如下:
32位应用程序在64位系统中是没有权限访问Environ$("SystemRoot%") & "\System32"的,64位系统只运行64位应用程序访问System32,对于32位程序考虑兼容性会强制转换到SysWOW64中。
所以你的desktop.ini这个文件要放到SysWOW64中,然后判断Environ$("SystemRoot%") & "System32\desktop.ini"。
-----------------------------
回到最上面我的2个判断文件存在的代码,之所以提示kernel32.dll这个文件存在,是因为SysWOW64里面有kernel32.dll这个文件,而syswow64里面是没有desktop.ini的,所以提示没有.
结果发现,那个文件确实存在,但程序就是提示找不到文件,同样的程序在XP下运行没有问题。
假如WIN7的系统目录是 C:\Windows\system32,这里面一定有desktop.ini与kernel32.dll这2个文件,
我用如下VB代码判断这2个文件是否存在
Private Sub Command1_Click()
Dim fs As New FileSystemObject
If fs.FileExists("c:\windows\system32\kernel32.dll") Then
MsgBox "kernel32.dll文件存在"
Else
MsgBox "文件不存在"
End If
End Sub
Private Sub Command2_Click()
Dim fs As New FileSystemObject
If fs.FileExists("c:\windows\system32\desktop.ini") Then
MsgBox "文件存在"
Else
MsgBox "desktop.ini文件不存在"
End If
End Sub
结果提示desktop.ini不存在,kernel32.dll存在
我也选了以兼容模式运行这个VB程序,也选了以管理员身份运行。
如果我把那个desktop.ini文件放在其它地方,例如 D:\Test下,再判断是否存在,就能准确判断出是否存在。
我怀疑是WIN7的安全问题,控制了一些程序不让访问系统目录下的某些文件。不知道如何解决。
有人说desktop.ini 是隐藏的,但若你在system32下建立一个非隐藏的文件,再用vb的函数判断那个文件是否存在,也是找不到那个文件的.
这个问题我问了好几天,没有满意的答复,不过今天似乎有个答复不错,好象解决了我的问题.
答复如下:
32位应用程序在64位系统中是没有权限访问Environ$("SystemRoot%") & "\System32"的,64位系统只运行64位应用程序访问System32,对于32位程序考虑兼容性会强制转换到SysWOW64中。
所以你的desktop.ini这个文件要放到SysWOW64中,然后判断Environ$("SystemRoot%") & "System32\desktop.ini"。
-----------------------------
回到最上面我的2个判断文件存在的代码,之所以提示kernel32.dll这个文件存在,是因为SysWOW64里面有kernel32.dll这个文件,而syswow64里面是没有desktop.ini的,所以提示没有.
相关文章推荐
- DVB学习简记
- VB中实现网页和EXE交互
- POST登录3GQQ
- vb滚轮
- VBA for Word 学习笔记(一)
- 【VBA研究】VBA中日期和时间相关的计算
- vbs 解码 unicode
- 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
- VBS中的字符串连接的性能问题
- VBScript Round 函数
- hi3531结构: VB_CONF_S
- hi3531结构: VB_CONF_S
- hi3531结构: VB_CONF_S
- hi3531结构: VB_CONF_S 分类: HI3531 2014-01-17 10:26 818人阅读 评论(0) 收藏
- ssh命令 安装 Vbox以及创建虚拟机等
- vbScript: 编号成生不夠位數前面加零
- VB.Net程序设计:XPTable基本操作代码段(备忘录)
- 【VBA研究】VBA中如何用求和函数SUM求和
- webservice 应用的问题(vb6调用,soapheader)
- VBoxManage: error: Cannot register the hard disk 解决办法