【发布时间】:2013-02-08 15:35:42
【问题描述】:
我目前正在使用 InstallSheild LE 安装一个 Windows 服务(作为 LocalSystem 运行)。该服务旨在从本地数据库文件中读取一些数据,将其打包,并以设定的时间间隔将其发布到外部服务器。我想从设置文件中读取数据库位置、服务器 url 等硬编码。我可以使用 App.config 轻松地做到这一点,但从我的研究中我了解到修改 App.config(或 Program Files 中的任何文件)在安装后是困难/不可能的。
我的问题是拥有一个应用程序的最佳方式是什么,我可以运行该应用程序来修改服务的必要设置,而无需“以管理员身份运行”。我应该将这些设置放在注册表中吗?将它们放在 AppData 中是正确的答案吗?如果是,这些设置如何在设置更改应用程序和服务之间共享?
我更像是一名 Web 应用程序开发人员,但在桌面应用程序/服务开发方面还没有太多经验,因此我将不胜感激任何正确方向的观点。
【问题讨论】:
-
特别是对于使用像
LocalSystem这样无所不能的帐户运行的服务,我会非常警惕非管理员可写入的设置。从安装和升级的角度来看,我认为您不编辑存储在 Program Files 中的文件的决定是一个很好的决定,但我建议在编辑应用程序中嵌入一个清单,以要求管理员权限才能运行它,并让它应用对文件、注册表项或您用于存储的任何内容具有高度限制性的 ACL。 -
有道理。您能否指出有关嵌入清单和设置 ACL 的任何文档的方向?
标签: c# windows service settings installshield