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

I/O permission settings using .net installer

提问人:wusher 提问时间:8/21/2008 最后编辑:GEOCHETwusher 更新时间:3/10/2009 访问量:835

问:

我正在创建一个程序,该程序将使用 .net 安装程序项目进行安装。程序将设置文件写入 Program Files 目录中的目录。它认为,如果受限用户正在运行该程序,则某些 Active Directory 设置将阻止应用程序正确连接到该目录。是否有办法通过安装更改应用程序文件夹的设置,这样就不会有问题?

.NET 安装 Active-Directory IO

评论


答:

-1赞 Joseph Daigle 8/21/2008 #1

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

最好的选择是完全不写入 Program Files 下的目录。

2赞 saschabeaumont 8/22/2008 #2

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

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

旧版win9x程序经常写入程序文件文件夹,Windows Vista实际上做了一些巧妙的技巧来让这些程序工作。当您的程序写入文件时,vista 实际上会将其放在只有该用户才能访问的其他位置。对 HKLM 的注册表写入也是如此(或者说,我在调试数小时后才发现......),Server 2008 也做同样的事情。

如果需要保存用户设置,最好的替代方法是将设置保存到“应用程序数据”文件夹(环境变量 %APPDATA%)中

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

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