【问题标题】:Windows 7 - UAC - VB6 - Text File Can't Be "Seen" By ApplicationWindows 7 - UAC - VB6 - 应用程序无法“看到”文本文件
【发布时间】:2011-03-29 00:46:42
【问题描述】:

我们有一个 VB6 应用程序,它可以读取一个带有 .LIC 文件扩展名的简单文本文件。当一切正常时,如果文件与可执行文件存在于同一目录中,它将读取它。如果没有,它会做其他事情。

我有一个使用 Windows 7 机器的客户,如果他右键单击 EXE 并“以管理员身份运行”,它会“看到”LIC 文件。如果他以基本用户身份运行 EXE,则看不到 LIC 文件。

我有足够多的 UAC 问题来猜测 UAC 正在从某种虚拟目录运行应用程序,这就是看不到 LIC 文件的原因。我的客户发誓他关闭了 UAC。

有人可以指点我吗?如果有办法告诉 UAC“让这个应用程序在这个目录中做它想做的事”,那就太好了。这超出了我的专业知识。我一直在谷歌搜索,直到我的手指脱落,我找不到正确的答案。

谢谢!

【问题讨论】:

  • 文件是如何放置在您期望的位置的?通过提升的过程?这个进程是否有一个包含 trustInfo 节点的应用程序清单?是否涉及两个用户(或者只有一个管理员用户使用和不使用提升)?您确定程序“看不到”文件还是看到的是空文件?

标签: vb6 windows-7 uac


【解决方案1】:

如果你认为虚拟化正在发生(这会导致它看起来不是程序文件),给他一个名为 foo.exe.manifest 的清单文件,其中 foo 是你的可执行文件名,并让他将它放在与exe 和 .lic 文件。此清单应将所需的执行级别设置为 asInvoker。这将抑制虚拟化,因此您可以将其排除为问题的一部分。然后他可能会收到拒绝访问错误,但这将帮助您解决问题。

【讨论】:

  • 我仍在处理这个问题,但我很确定这就是问题所在。尽管我不愿承认,但我并没有意识到这个明显的要求。我仍在研究这个问题,但我很确定这就是问题所在。尽管我不愿承认,但我并没有意识到这个明显的要求。我很惊讶 Windows 7/Server 2008 在添加的任何没有清单的新应用程序上都没有提示消息框。这会更有意义。有很多“网络管理员”对这个清单文件一无所知。
  • 还应该有一个“自动创建”清单实用程序,供网络管理员尝试让应用在这些新操作系统上运行,而无需关闭 UAC 以运行旧版应用。不管怎样,感谢凯特让我指出了正确的方向。现在我知道谷歌的“什么”,我正在寻找大量信息。如果我尝试的方法不起作用,我可能会与 Kate 联系,以支付有关此问题的一些咨询/指导费用。
【解决方案2】:

也可能是权限?如果用户没有以管理员身份登录,那么您的程序可能没有读取“.lic”文件的权限。您是否检查过用户是否可以在记事本中打开它?您的代码是否有可能尝试使用读/写权限打开它,而这更有可能失败?

您可能需要更改您的安装,以降低您的应用安装目录的权限。

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2011-06-13
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多