我正在创建一个将使用.net安装程序项目安装的程序。程序将设置文件写入Program Files目录中的目录。它认为有一些活动目录设置会阻止应用程序在有限用户运行程序时正确访问该目录。有没有通过安装更改应用程序文件夹的设置,所以这不会有问题?
答案 0 :(得分:2)
写入Program Files文件夹是一个非常糟糕的主意,你应该假设这个位置在安装后是“只读”的。
如果两个以上的人一次使用计算机(例如终端服务)应该保存设置,是否希望其他用户知道“你的”设置?如果您的程序将设置作为用户A写入文件,但用户B无法编辑文件,会发生什么?用户B可以访问该目录,但不能读取/删除首选项文件,因为它由用户A拥有。
传统的win9x程序经常写入程序文件文件夹,Windows Vista实际上做了一些巧妙的让这些程序工作。当您的程序写入文件时,vista实际上将其放在只有该用户可访问的其他位置。对于HKLM的注册表写入也是如此(或者我经过几个小时的调试后才发现...),Server 2008也做了同样的事情。
如果您需要保存用户设置,最好的选择是将设置保存到Application Data文件夹(环境变量%APPDATA%)
如果设置是系统范围的,那么管理用户应该在安装后或首次运行时设置这些设置,并且它们不应该被有限的用户覆盖。
所以回答你的问题 - 是的,有办法做你所问的。但这是一个坏主意,它不安全,从长远来看可能会引发问题。
答案 1 :(得分:-1)
您可以编写自定义安装程序类,该类可以更改文件夹的安全权限。这将假设安装由有权更改文件/目录安全性的用户完成。
最好的选择是根本不写入Program Files下的目录。