我正在尝试发布一个C ++ .Net应用程序,并且对Windows UAC感到非常沮丧。我没有太多的经验,因为一直在为XP写作。
程序需要更新存储在两个XML文件中的某些属性,并且每次尝试时,如果它没有使用管理员帐户运行,则会被拒绝访问。 我遵循了Microsoft的建议,并将所有需要修改的文件写入CSIDL_COMMON_APPDATA文件夹。安装程序具有在后者中创建[Organization} [Program]结构的操作,并添加具有完全控制权限的安全组Every One,因为默认情况下,该目录是只读的。 我已经验证了已创建目录[Organization} [Program]确实包含组和安装后分配的权限。 此外,该应用程序有一个带有requestedExecutionLevel的清单,我已尝试过asinvoker和Highestavailable。
除非用户未以管理员身份登录,否则应用程序仍无法写入目录...
这些计算机位于由服务器2003控制的域中,但客户端是XP,Vista和7的混合。
拜托,有更多经验的人能比我更让我高兴吗? 我应该使用其他文件夹吗?问题是不同的用户可能会登录到计算机并且这些设置很常见,因此明显的用户文件夹不是一个选项。
我无法使用安装程序将用户添加到文件夹的安全性中,因为我不知道域中的哪个用户将使用该程序,并且在启动时我无法从程序中执行此操作,因为如果用户没有管理员权限该程序将被阻止。
请告诉我在这里缺少什么的任何建议或指示?
答案 0 :(得分:1)
This可能会讨论您的问题。特别是
您的应用程序的安装程序需要在CSIDL_COMMON_APPDATA的子目录中设置ACL,以允许用户根据您的应用程序的需要访问该目录