【发布时间】:2013-10-14 21:38:30
【问题描述】:
我有一个 VB6 应用程序,用于处理 Win7 中 ProgramData 文件夹中的文件。它可以很好地处理它创建的文件,但任何最初安装的文件都无法删除。我觉得除非程序可以以管理员身份运行,否则可能会有更多问题。
我尝试将 TrustInfo 部分放入其清单中,但出现一条消息....“请求的操作需要提升。”
清单包括...
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
知道如何给它所需的“海拔”吗? 经过更多研究,ProgramData 是 Win7 中使用的文件夹似乎是正确的,但所有安装的文件都需要管理员权限才能删除(无论 setup.exe 是否以管理员身份运行)。
出于兴趣,我将已安装文件的安全属性与应用随后创建的文件进行了比较。安装的文件具有具有完全权限的 SYSTEM 和管理员以及只有读取和执行权限的用户。 创建的文件有一个额外的对象,我的帐户,具有完全权限。这听起来合乎逻辑,因此我将具有完全权限的帐户添加到已安装的文件之一中,希望应用程序能够将其删除。然后,正如预期的那样,我可以在资源管理器中手动删除文件,无需权限。但该应用程序仍然无法删除它! 于是我把已安装文件的用户权限改成了完全权限,App还是删不掉! 然后我在高级中更改为文件的所有者,首先更改为用户,然后更改为我的帐户。该应用程序仍然无法删除它。 现在安装文件和应用程序创建文件的安全设置似乎没有任何区别,两者具有相同的权限和相同的所有者。
因此,如果我比较高级安全设置,两个文件之间仍然存在一些差异。安装的文件在我的帐户和用户的权限中有 2 个额外的“未继承”条目。即使我删除了高级中的用户条目(仍然只有读取权限),应用程序仍然无法删除。
我想知道这是否是 VB6 问题,我是否应该将应用程序留在旧的安装文件夹中,在那里它可以使用自己的文件做自己喜欢的事情!!
【问题讨论】:
-
另一种方法是让应用程序“拥有”与它一起安装的所有文件到它的 ProgramData 文件夹中。它似乎可以很好地处理它自己创建的文件。
-
您不应该更改程序文件下的文件。您可以更改程序以便将文件存储在“批准的位置”吗?见this question
-
不确定您所说的“程序文件下方”是什么意思。该应用程序将程序文件存储在“程序文件”中,并将所有数据文件存储在 ProgramData 中。
-
我查看了链接和链接并阅读了它 ProgramData 将是常见程序数据文件的正确位置,这也是返回 ProgramData 文件夹......
-
strAppData = CreateObject("Shell.Application").Namespace(ssfCOMMONAPPDATA).Self.path
标签: vb6 permissions manifest