1

我正在创建一个将使用 .net 安装程序项目安装的程序。程序将设置文件写入 Program Files 目录中的目录。它相信有一些活动目录设置会阻止应用程序在受限用户运行程序时访问该目录。是否可以通过安装更改应用程序文件夹的设置,这样就不会出现问题?

4

2 回答 2

2

写入 Program Files 文件夹是一个非常糟糕的主意,您应该假设该位置在安装后是“只读”的。

如果两个以上的人同时使用计算机(例如终端服务),在 Program Files 中保存用户设置会导致问题应该保存谁的设置,您是否希望其他用户知道“您的”设置?如果您的程序以用户 A 的身份将设置写入文件,但用户 B 无法编辑该文件,会发生什么情况?用户 B 可以访问该目录,但不能读取/删除首选项文件,因为该文件归用户 A 所有。

传统的 win9x 程序经常写入程序文件夹,Windows Vista 实际上做了一些巧妙的技巧来让这些程序工作。当你的程序写入一个文件时,vista 实际上把它放在了只有该用户可以访问的其他地方。对 HKLM 的注册表写入也是如此(或者我在调试数小时后发现......),Server 2008 也做同样的事情。

如果您需要保存用户设置,最好的选择是将设置保存到应用程序数据文件夹(环境变量 %APPDATA%)

如果设置是系统范围的,则管理用户应在安装后或首次运行时设置这些设置,并且它们不应被受限用户覆盖。

所以回答你的问题 - 是的,有一种方法可以做你所问的。但这是一个坏主意,它不安全,从长远来看可能会导致问题。

于 2008-08-22T03:47:43.130 回答
-1

您可以编写一个自定义安装程序类,它可以更改文件夹的安全权限。这将假定安装由有权更改文件/目录安全性的用户完成。

最好的选择是根本不写入 Program Files 下的目录。

于 2008-08-20T21:27:17.420 回答