vb6在win 7中读写文本文件
Posted
技术标签:
【中文标题】vb6在win 7中读写文本文件【英文标题】:vb6 read and write a text file in win 7 【发布时间】:2013-07-18 09:57:51 【问题描述】:我正在尝试在 Windows 7 上执行 .exe 文件(由 VB6 创建)。 应用程序将做的是简单地创建一个文本文件,然后读取文本文件的文本。 所有功能都在 Windows XP 上成功测试。当我在 Win 7 上执行 .exe 文件时,函数照常运行,但我创建的文件在特定路径 (C:\test.txt) 上不存在。最奇怪的是,尽管无法在文件资源管理器中找到文本文件,但我仍然可以从文本文件中读取内容(通过 .exe 文件)。
然后我发现我必须选择[以管理员身份运行]来执行.exe文件,这样文件(test.txt)才会在C:盘上创建。我很好奇 .exe 文件如何在不存在的情况下仍然可以读取文本文件,以及如何强制 .exe 文件以管理员身份运行?
这是写入和读取文件的代码。
Open "C:\" & "test.txt" For Output As #1
Print #1, cDrive.Text
Close #1
Open "C:\" & "test.txt" For Input As #1
Input #1, msg
Close #1
cDrive.Text = msg
Exit Sub
【问题讨论】:
搜索 UAC 数据重定向:blogs.windows.com/windows/archive/b/developers/archive/2009/08/… 不要把垃圾塞进引导盘根目录,它是一个受保护的文件系统位置。 【参考方案1】:回答第三句话: Windows Vista 和 Windows 7 用户访问控制 (UAC) 引入了一项称为 VirtualStore 的功能,旨在为安装在 Program Files 文件夹下的应用程序添加额外的安全保护层。如果您在硬盘上搜索文件,您可能会在 /User/AppData/Local/VirtualStore 中找到该文件的第二个实例 所以这就是为什么它仍然能够读取 text.txt 尽管它不存在于你提到的位置。
【讨论】:
【参考方案2】:-
建议您使用快捷方式中的功能以管理员身份运行程序(编译安装后)。
如果您在调试模式下询问它 - 我相信如果您用来调试的用户是管理员 - 就足够了。
我无法回答您的问题“我很好奇 .exe 文件即使不存在也能读取文本文件”
不应直接将 open 指定为 #1,而是使用 FreeFile() 函数Look here for a sample。
祝你好运
【讨论】:
谢谢您的回复,但是可以通过VB6代码强制以管理员身份运行吗? 试试这个:***.com/questions/8416665/…【参考方案3】:驱动器 C 受 Win7 保护,你仍然可以写入它,但你真的不应该。
如果您想以管理员身份运行应用程序:
右键单击EXE 选择属性 进入兼容性选项卡 选中以管理员身份运行此程序复选框 点击确定现在每次运行应用程序时,它都会以管理员身份运行
【讨论】:
以上是关于vb6在win 7中读写文本文件的主要内容,如果未能解决你的问题,请参考以下文章