1

我有一个 VB6 应用程序,它链接到一个 MS Access DB。数据输入屏幕上的所有记录都是使用 ADO/SQL 写入或读取的。

在一个用户站点(使用 Win 7 - 他的 UAC 设置为最高安全性,因此一开始,读取/写入错误!此外,应用程序和数据(子文件夹)文件夹设置为只读。所以一次我通过将“所有用户”的安全更改为 FULL CONTROL 来纠正所有这些问题,记录已写入数据库。但是,当我直接从 MS Access 打开 MDB 时,我无法在 3 个表中的任何一个表中看到任何记录客户端从前端输入数据。

所以 1. 要么 MS Access 隐藏表中包含数据和显示的行和空白表,要么 2. 在 Data 子文件夹中有一个隐藏的 MDB 副本(当程序检查 MDB 文件的可用性时)启动,如果不可用,它会发布消息框错误

有没有人见过这种行为,如果它是#2,我如何在 Win 7 中显示所有文件 - 请记住,MDB 不是操作系统文件,因此默认情况下不应隐藏。或者这是一些 AV(赛门铁克)活动吗?

请参阅 Y 2004 中的此链接,这与我的问题完全相同 - 但没有答案: http ://www.pcreview.co.uk/forums/hidden-records-t1086918.html

感谢任何人可以摆脱的任何帮助

问候方兹

4

2 回答 2

1

这听起来像是一个设计不当的应用程序,它将可写数据(此处为 MDB 文件)放在受保护的文件夹(“程序文件”)中,并且在没有应用程序清单说明它是“Vista 感知”的情况下运行。如果您这样做,Windows 将尝试为程序安装一组标准的 appcompat shim,在这种情况下,文件虚拟化 shim 很可能正在工作。

这会导致每个用户在其虚拟存储文件夹中创建原始数据的私有副本。这些私人副本是更新的内容。

相反,正确的清单会导致此安全违规的致命运行时错误,从而更快地了解做错了什么,并且通常会导致更快的解决方案。

诸如 INI 文件、MDB 文件和其他必须更新并可供系统任何用户使用的应用程序资源之类的内容应放入安装程序在 [CommonAppData] 下创建的特定于应用程序的文件夹中。您的安装程序应在子文件夹上设置所需的安全属性以包含可写文件,以便所有用户都具有所需的访问权限。这里的默认值是“所有者”访问权限,这可能不是您想要的(文件创建者拥有完全访问权限,其他人拥有读取访问权限)。

这适用于任何版本的 Windows,包括带有 IE4 桌面更新的 Windows 95。通过安装程序 MSI 软件包很容易完成。

于 2012-11-05T14:34:11.047 回答
0

您是否 100% 确定正在写入哪个 MDB 文件?如果您正在编写然后在 VB6 中看到您的记录,但在您打开的 MDB 中看不到它们,则可能是它正在对不同的文件执行此操作。

我建议您使用进程监视器来准确验证 VB6 应用程序正在写入哪个文件。这将允许您进一步排除故障。

http://technet.microsoft.com/en-us/sysinternals/bb896645

它可能有点忙,但它可以让您准确确定正在写入哪个文件,而不管您对代码的操作做出任何假设。

于 2012-11-05T01:43:57.960 回答