2

[我在 2 个月前提交了这个问题,但没有任何回复......显然问题仍然存在,我们即将发布我们应用程序的新版本,所以现在正在编写一些文档让用户删除虚拟商店中的任何条目-我不想做的事情....所以现在真的希望有人可以帮助我们吗?!]

我很感激有很多关于这个主题的信息,但我仍然有一个烦人的问题,不知道该去哪里......因此来到这里!

我们有一个应用程序 (VB.NET) 现在将 REPORT 文件安装到 ProgramData 下的文件夹中。现在我们的应用程序 dll 是从第三方应用程序(我们显然无法控制)运行的,这个第三方应用程序允许人们运行报告;但是当运行报告时,它会更新报告,以便存储它的“上次运行日期”。这就是给我们带来乐趣的原因。

启用 UAC 后,报告文件将被复制到虚拟存储中的等效位置。当他们使用我们应用程序的当前版本时,这当然没问题,但是当我们发布新版本(带有修改后的报告)时,这些新版本会正确安装到 ProgramData 中,但是当用户运行应用程序时 - 他们会看到来自虚拟商店的过时报告。

我们非常接近编写一些安装文档,告诉人们在安装我们的新版本之前从虚拟商店中删除任何报告 - 但这是一个真正的逃避!

第三方应用程序还安装了自己的报告(安装到 ProgramData 下的不同位置),并且他们能够在不启动虚拟商店的情况下更新他们的报告 - 所以我们知道这是可能的!

我刚刚在我们的 dll 中添加了一个清单:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
  </assembly>

希望这是治愈方法,但可惜没有!

所以,我愿意接受你们可能有的任何建议?!?

干杯,

克里斯。

4

2 回答 2

0

当用户无权写入请求的程序文件夹时,将使用 VirtualStore。所以最简单的解决方案是给你的用户权限。实际上,我喜欢使用用户组,所以还有一些安全性。

系统工具>本地用户和组>组,“新组”并创建说“XYZCompanyUsers”。Windows 资源管理器 > 程序文件 (x86) > XYZCompany,“属性”“安全”。现在添加新组“XYZCompanyUsers”并授予他们完全权限。

于 2014-06-03T15:20:54.563 回答
0

应用程序需要具有程序集清单。

放入asInvokera 的程序集清单对.dll您没有帮助。

现在我们的应用程序 dll 是从第三方应用程序运行的(我们显然无法控制)

您需要告诉第 3 方应用程序编写正确的Windows 应用程序。并且正确编写的 Windows 应用程序具有程序集清单。如果它们.exe没有清单,那么它就不是正确编写的 Windows 应用程序。(清单是 Windows 编程基本规则的一部分)。

  • 如果他们没有清单:您可以创建自己的并将其放置在他们的可执行文件中(例如使用 ResourceHacker,或者MT可以在 Windows 10 SDK 中找到)
  • 或者您可以编辑他们现有的程序集清单(再次使用 Resource Hacker)以包含该asInvoker属性
  • 或者您可以放置​​一个外部 ( CotosoApp.exe.manifest) 清单
于 2021-04-02T20:01:40.597 回答