我的许多 Windows 桌面系统都存在一个长期存在的问题,即在尝试安装时,各种 MSI 软件包都会抛出错误 1606(在 MSI 日志中为 1314),这是一个权限问题。该位置几乎总是用户的文档、图片或此层次结构中的其他文件夹的位置 - 但此位置确实存在,并且非常有可能访问它(可以从在上述位置生成和存储的日志文件中看出)。
有一段时间,我一直认为这是因为我们将用户的目录设置为 UNC 路径,因为将它们更改为驱动器号似乎可以解决问题。但是,有些情况下,UNC 路径似乎并没有在与存在问题的机器具有相同设置(SCCM 客户端设置、相同的应用 GPO、相同的权限等)的无关机器上引起问题。
我在 technet、autodesk 论坛上搜索了很多,并且联系了支持我们使用的某个软件包的公司,但似乎没有人能够提供帮助。通常给出的答案是检查注册表中 User Shell Folders 项中的路径,但这些路径被故意设置为 UNC 路径。
仅供参考,我们使用 UEV 来虚拟化用户的个人资料。他们登录后会发生以下映射:
- %homeshare% 的用户文件存储在网络共享上的 \fileserver\home$\username\ 下(例如文档、桌面等)
- %appdata% 的用户设置存储在网络共享中,位于 \fileserver\setting$\username\
每个用户都可以通过上述路径访问自己的共享,并对其区域拥有完全的权限。
例如,一个包被设置为在登录时按用户安装。正如此问题的典型情况一样,我们随后收到一条错误消息,提示无法访问桌面文件夹,而实际上可以访问。但是,以管理员身份运行有时是可行的 - 但同样,这是一个按用户安装的包,因此它实际上必须为登录的用户运行。我甚至不确定抛出错误的文件夹是否被使用过;那么这只是一个配置不当的 MSI 吗?
对于标准机器,注册表设置如下:
以下是我们使用的一些存在错误的应用程序示例:
AutoCAD 2014:
当用户(部分用户,似乎不是全部)首次尝试运行 AutoCAD 时,会弹出错误 1606。如果管理员(本地和域)尝试启动它,则一切运行正常,并且设置似乎存储在本地,而不是存储在其网络共享存储区域中。有时。但如果普通用户尝试运行它,则会出现无法访问文件夹的消息。
签名 3.20:
尝试以域用户身份安装 AutoCAD 时弹出错误 1606。最终安装失败,因为它无法访问 /SendTo 或 /Documents
msiexec 日志中的示例:
MSI (c) (40:28) [15:55:12:744]: Note: 1: 1314 2: \\fileservc\settings$\otb\Microsoft\Windows\SendTo \
MSI (c) (40:28) [15:55:12:744]: Note: 1: 1606 2: \\fileservc\settings$\otb\Microsoft\Windows\SendTo \
Error 1606.Could not access network location \\fileservc\settings$\otb\Microsoft\Windows\SendTo \.
MSI (c) (40:28) [15:57:45:230]: Product: Autograph 3.20 -- Error 1606.Could not access network location \\fileservc\settings$\otb\Microsoft\Windows\SendTo \.
云驱动器映射器:
每次用户登录时都会运行此程序,以映射其驱动器。这涉及 msiexec,对于大多数用户来说,在尝试映射其桌面时会导致错误 1606(这是否是有意为之并不重要,更重要的是登录用户可以访问安装程序似乎无法访问的位置)来自 msiexec 日志的示例:
MSI (c) (70:04) [10:00:49:185]: Product: Cloud Drive Mapper -- Error 1606. Could not access network location \\fileservc\home$\OTB\Desktop\.
MSI (c) (70:04) [10:00:49:185]: Note: 1: 1314 2: \\fileservc\home$\OTB\Desktop\
MSI (c) (70:04) [10:00:49:185]: Note: 1: 1606 2: \\fileservc\home$\OTB\Desktop\
MSI (c) (70:04) [10:00:49:185]: Note: 1: 2262 2: Error 3: -2147287038
我认为这可能是本地主机以“系统”身份运行 msiexec 的问题,但错误日志似乎表明它正在以登录帐户身份运行:
此外,文件服务器在事件查看器中不显示任何错误日志 - 我尝试在测试用户的共享文件夹上添加审核,并检查本地策略/审核策略/下的所有策略是否失败。什么都没有显示。唯一显示错误的地方是本地计算机上的 msiexec。
我还尝试过信任测试计算机以将权限委托给文件服务器,并更改文件服务器的安全设置以添加具有完全访问权限的测试计算机帐户,以覆盖所有基础。没有区别。