我真的不了解Windows UAC ...
我的程序需要能够更新文件并将其添加到属于某个程序的特定目录中。此目录可能是Program Files中应用程序的子目录,例如c:\ Program Files \ MyApp \ Data,也可能安装在其他位置。
我相信如果它在Program Files下,那么我的程序将被禁止在那里写入,除非它以管理员身份运行并且提升了它的访问权限。这是对的吗?
我需要能够在不调用提升权限的情况下更新该目录中的文件,并且主应用程序仍然“受保护”,只需允许访问该目录。我无法将Data文件夹移动到其他地方,因为它是我需要与之交互的第三方应用程序。
如何确定程序文件中的文件夹需要UAC?程序文件在某种程度上是特殊的还是只是权限?如果我要调整该Data子目录的权限,以便运行该程序的用户帐户具有写访问权限,那么我的应用程序是否可以更新该目录中的文件而没有特殊权限?
或者有没有更好的方法来达到这个我没想到的?我的更新程序需要在java中,因此获得提升权限是一件痛苦的事。我想我需要编写一个C ++包装器来运行java VM,以便我可以给该包装器一个合适的清单。并非不可能,但我真的不想这样做。
答案 0 :(得分:2)
尝试在安装时更改应用程序的目录安全设置,以允许“Authenticated Users”写入权限。
答案 1 :(得分:1)
通常,当您需要受保护和不受保护的UAC模式时,请执行以下操作:
这是VMWare Workstation在您更改全局设置时的工作方式。
编辑:更改文件夹的权限不是一个好方法。只是一个肮脏的黑客,因为任何人都可以写入该文件夹,这将使UAC的角色无效 - 毕竟这是UAC的角色:防止特殊文件夹中的非特权更改。