我有一个VB6应用程序,它链接到MS Access DB。使用ADO / SQL编写或读取数据输入屏幕上的所有记录。
在一个用户站点,(使用Win 7 - 他的UAC被设置为最高安全性,所以首先,读取/写入错误有错误!此外,应用程序和数据(子文件夹)文件夹设置为仅读取因此,一旦我通过将“所有用户”的安全性更改为完全控制来纠正所有这些,记录就会写入数据库。但是当我直接从MS Access打开MDB时,我无法在任何3个中看到任何记录。客户从前端输入数据的表格。
所以 1. MS Access是否隐藏表中的行与数据和显示和空白表或 2.数据子文件夹中有一个隐藏的MDB副本(因为程序在启动时检查MDB文件的可用性,如果不可用,则会发布消息框错误
有没有人看到过这种行为,如果它是#2,我如何在Win 7中显示所有文件 - 请记住,MDB不是操作系统文件,因此默认情况下不应隐藏。或者这是一些AV(赛门铁克)活动吗?
请参阅2004年的这个链接,这与我的问题完全一样 - 但没有答案: http://www.pcreview.co.uk/forums/hidden-records-t1086918.html
感谢任何人可以帮助的任何帮助
此致 的Fonz
答案 0 :(得分:1)
这听起来像是一个设计不正确的应用程序,它将可写数据(此处为MDB文件)放在受保护的文件夹(“Program Files”)中,并且正在运行时没有应用程序清单,表明它是“Vista识别”。如果你这样做,Windows会尝试在程序中使用一组标准的appcompat填充程序,在这种情况下,很可能文件虚拟化填充程序正在运行。
这会导致每个用户在其Virtual Store文件夹中创建原始数据的私有副本。这些私人副本是更新的。
正确的清单会导致此安全违规导致致命的运行时错误,从而更快地了解错误的原因,并且通常可以更快地解决问题。
必须更新并可供系统任何用户使用的INI文件,MDB文件和其他应用程序资源等内容应放入安装程序在[CommonAppData]下创建的特定于应用程序的文件夹中。安装程序应在子文件夹上设置所需的安全属性以包含可写文件,以便所有用户都具有所需的访问权限。这里的默认值是“所有者”访问权限,这可能不是您想要的(文件创建者具有完全访问权限,其他人具有读访问权限)。
适用于任何版本的Windows,包括带有IE4桌面更新的Windows 95。通过Installer MSI包很容易实现。
答案 1 :(得分:0)
您是否100%确定要写入哪个MDB文件?如果您正在编写然后在VB6中查看您的记录,但是在您打开的MDB中看不到它们,那么它可能正在将其用于另一个文件。
我建议您使用进程监视器来验证VB6应用程序正在写入哪个文件。这将允许您进一步排除故障。
http://technet.microsoft.com/en-us/sysinternals/bb896645
它可能有点繁忙,但无论您对代码的操作有任何假设,它都可以让您确切地确定要写入哪个文件。