我先回答您提出的问题,然后再給出如何解决软件分发问题的方法。
1、当软件按照用户分发时,windows installer将会执行如下动作:
a、在当前用户的profile目录中写入相应应用程序的快捷方式
b、相应的应用程序列表出现在添加/删除列表中
c、向注册表的 HkCU\Software\Classes 写入COM注册信息
d、对应用程序执行赋予当前用户权限或者提升权限
e、应用程序的图标以及相关文件写入 %USERPROFILE%\Application
Data\Microsoft\Installer\{ProductCode GUID}
f、为当前用户设置与应用程序相关的属性值,例如:
DesktopFolder、ProgramMenuFolder、StartMenuFolder、StartUpFolder、TemplateFolder、AdminToolsFolder……
2、程序的安装都是使用system权限,所不同的是,如果管理员指定了该程序分发给某些用户账户,那么该程序执行的时候,将使用相应用户账户的权限。
3、alway instal with elevated privileges 恰巧就是针对第2个问题。当您同时在计算机策略和用户策略中指定了该策略项以后,那么即便应用程序是对用户账户分发,那么用户账户在执行该应用程序的时候,也将使用system权限。当然,这个策略势必会给系统带来安全性风险。受策略影响的用户帐户将可能有权限访问及写入本地计算机上的受保护的资源,例如系统注册表和系统目录。
那么如何解决您遇到的问题呢?一般来说,客户端在套用应用程序分发策略时,将会有两个地方遇到权限问题,一是软件分发点,也就是共享软件的目录,相应的计算机账户或者用户账户至少需要对共享目录拥有可读权限。二是软件执行,对计算机账户指派,由于是使用system安装并执行,一般不会有什么问题,但对于用户账户分发,就可能会由于无法读写应用程序的某些目录或者注册表键值而执行失败。
通常,我们有两种方法来debug这个问题。
1、通过观察日志找到问题所在以及相关的错误信息。这包括:
a、应用程序日志,这存在于对应的客户端计算机上,您需要记录相应日志的全部内容,这包括 source and id and detail。
2、通过GPMC收集应用程序分发策略的执行结果集,如果有设置错误,那么报告中将会給出相应的信息。
您可以通过我上面提到的方法,收集一下策略执行的信息,然后根据这些信息进行搜索,从而获得更为准确的解决方法。