使用.net安装程序的I/O权限设置


1

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

2

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

如果有两个以上的人同时使用计算机(例如,终端服务),那么应该保存设置,您是否希望其他用户知道您的设置?如果程序将设置作为用户A写入文件,但用户B无法编辑该文件,会发生什么情况?用户B可以访问该目录,但不能读取/删除偏好文件,因为这由用户A拥有。

传统的win9x程序经常写入程序文件文件夹,Windows Vista实际上做了一些巧妙的技巧来让这些方案工作。当你的程序写入一个文件时,Vista实际上把它放在其他地方,只有该用户才能访问。注册表写入HKLM也是这样做的(或者我经过几个小时的调试才发现),而Server 2008也是这样做的。

如果你需要保存用户设置的最佳替代方案是保存到Application Data文件夹的设置(环境变量%APPDATA%)

如果设置是全系统的,那么管理用户应在安装后或第一次运行时设置它们,它们不应该被有限的用户覆盖。

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


-1

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

最好的选择是不写入程序文件下的目录。