Windows 7 Windows 7上的VB6应用程序有时仅保存到虚拟存储

Windows 7 Windows 7上的VB6应用程序有时仅保存到虚拟存储,windows-7,vb6,crash,virtualstore,Windows 7,Vb6,Crash,Virtualstore,我负责维护一个VB6应用程序,我在Windows7上遇到了一个奇怪的行为 当应用程序安装到Program File(x86)(或者我假设它没有写入权限的任何目录)时,大多数情况下,当它在本地保存文件时,它最终会出现在一个奇怪的虚拟存储位置。这是可以接受的。但偶尔,它会尝试在本地保存,并给出一个错误,告诉您不允许在这里保存,并询问您是否希望在其他地方保存。至少,如果您试图将其保存为新文件,如果您试图将其保存为现有文件,它会崩溃,并出现运行时错误75 这两个文件都是用“openfilename As

我负责维护一个VB6应用程序,我在Windows7上遇到了一个奇怪的行为

当应用程序安装到Program File(x86)(或者我假设它没有写入权限的任何目录)时,大多数情况下,当它在本地保存文件时,它最终会出现在一个奇怪的虚拟存储位置。这是可以接受的。但偶尔,它会尝试在本地保存,并给出一个错误,告诉您不允许在这里保存,并询问您是否希望在其他地方保存。至少,如果您试图将其保存为新文件,如果您试图将其保存为现有文件,它会崩溃,并出现运行时错误75

这两个文件都是用“openfilename As#1”简单地打开的——有人能告诉我更多关于是什么迫使它使用或不使用用户没有写入权限的文件夹中的虚拟存储的信息吗


或者,我试着以管理员的身份运行应用程序,但在启动时它崩溃了,--我还不明白为什么程序会在锁定模式下工作,而不是以管理员的身份工作。

好吧,你自己几乎已经明白了这一点:对于某些位置,你不能在没有提升的情况下写入,而对于其他位置,则根本不能。对于某些位置,Windows将提供帮助并将文件重定向到VirtualStore。其中包括:

  • 程序文件和程序文件(x86)
  • 窗户
  • 程序数据
它认为,最好的编程实践是永远不要假设文件操作可以正常工作。您可以预测错误并提前警告用户,并且必须将任何文件操作嵌入到
on Error Goto
块中

关于提升运行时程序崩溃(这实际上是最后的解决方案,请尽量避免):VirtualStore的问题是,一个文件可能有两个版本:提升时写入的版本和未提升时写入的版本。当您运行该程序时,它会突然使用其他文件,因此可能会表现出其他行为,包括崩溃

(优秀文章!)


祝你好运

好吧,你自己已经很清楚了:对于某些位置,你不能在没有高程的情况下书写,而对于其他位置,你根本就不能。对于某些位置,Windows将提供帮助并将文件重定向到VirtualStore。其中包括:

  • 程序文件和程序文件(x86)
  • 窗户
  • 程序数据
它认为,最好的编程实践是永远不要假设文件操作可以正常工作。您可以预测错误并提前警告用户,并且必须将任何文件操作嵌入到
on Error Goto
块中

关于提升运行时程序崩溃(这实际上是最后的解决方案,请尽量避免):VirtualStore的问题是,一个文件可能有两个版本:提升时写入的版本和未提升时写入的版本。当您运行该程序时,它会突然使用其他文件,因此可能会表现出其他行为,包括崩溃

(优秀文章!)


祝你好运

它不是“锁定模式”,而是“标准用户模式”。当您的程序工作时,它通过appcompat(这就是虚拟化的用武之地)工作。这里的东西被称为“LUA Bug”——毫无疑问,这是一个编程Bug。只需通过将文件存储在适当的位置来修复它。也许有助于回答您的一些问题。它不是“锁定模式”,而是“标准用户模式”。当您的程序工作时,它通过appcompat(这就是虚拟化的用武之地)工作。这里的东西被称为“LUA Bug”——毫无疑问,这是一个编程Bug。通过将文件存储在适当的位置来修复它。也许可以帮助回答您的一些问题。这是一件奇怪的事情。其中一个对话框透明地保存到虚拟存储中,而另一个对话框,即使该对话框指示它是同一目录,也拒绝保存。我还不知道为什么。有问题的警告是:“您没有权限保存在此位置。”——而不是保存到虚拟存储。对于新创建的文件,这种情况甚至会发生。有趣的是,虚拟化似乎只是在某些扩展上失败了,比如.wrs和。wsc@ChadMourning我发现:可执行文件不是虚拟化的,因此在试图将它们写入系统文件夹(如程序文件)时会抛出异常。看,这就是奇怪的事情。其中一个对话框透明地保存到虚拟存储中,而另一个对话框,即使该对话框指示它是同一目录,也拒绝保存。我还不知道为什么。有问题的警告是:“您没有权限保存在此位置。”——而不是保存到虚拟存储。对于新创建的文件,这种情况甚至会发生。有趣的是,虚拟化似乎只是在某些扩展上失败了,比如.wrs和。wsc@ChadMourning我发现:可执行文件不是虚拟化的,因此在试图将它们写入系统文件夹(如程序文件)时会抛出异常。见: