3

我的公司生产一个跨平台的服务器应用程序,它从用户可编辑的配置文件中加载其配置。在 Windows 上,配置文件 ACL 被我们的安装程序锁定,以允许所有用户读取,但仅限于管理员和本地系统进行编辑。

不幸的是,在 Windows Server 2008 上,即使是本地管理员也不再拥有管理员权限(因为 UAC),除非他们正在运行提升的应用程序。这引起了用户的抱怨,他们无法使用他们最喜欢的文本编辑器打开和保存配置文件更改——他们可以打开文件(因为任何人都可以阅读)但无法保存。

任何人都对我们可以在我们的应用程序设置中做什么(如果有的话)提出建议,以使 Windows Server 2008 上的管理员更容易进行编辑?

相关问题:如果 Windows Server 2008 管理员想要编辑仅限管理员的配置文件,他通常是如何进行的?他是否被迫使用足够智能的文本编辑器,以便在需要提升时自动提升,就像 Windows 资源管理器在响应拒绝访问错误时所做的那样?他是否从提升的命令提示符窗口启动编辑器?还有什么?

4

4 回答 4

5

在我看来,无法右键单击记事本并选择“以管理员身份运行”的管理员不应该是管理员,但是……在现实生活中,周围有这样的管理员。

UAC 的工作原理是从用户的安全令牌中禁用管理员组 SID,直到您运行具有提升权限的程序。不幸的是,在非提升模式下运行时,无法使用管理权限。

不幸的是,需要大量工作的一种解决方法可能是:

  • 为您的配置文件创建自定义文件名后缀。
  • 创建一个注册为该配置文件处理程序的小应用程序。
  • 将小型应用程序标记为需要提升的权限(您可以在创建新应用程序时执行此操作)。

小应用程序唯一应该做的就是在注册表中找到 .txt 文件的注册处理程序,然后使用它打开文件 - 使用提升的权限。

于 2010-03-24T21:03:49.937 回答
4

对于物有所值的管理员来说,这并不复杂。打开提升的文本编辑器,打开文件,保存,完成。大多数编辑配置文件的人现在已经习惯了这种仪式。Unix 人本能地这样做(使用 sudo);这只是在 Windows 上比较困难,因为它对于某些用户来说仍然是一个稍微陌生的领域。

实际上,如果它是 HKLM 注册表设置,他们会遇到同样的问题,除了他们必须提升 regedit 或 Powershell 或他们通常用来编辑注册表设置的任何东西。

如果他们无法弄清楚,他们可以选择完全禁用 UAC,或者将其降低一两个档次,但我怀疑如果他们无法弄清楚如何打开一个提升的编辑器,这将产生比它更多的问题解决。

在对系统范围的配置文件进行重大更改之前,您应该考虑一下。如果您不打算进行系统范围的更改,UAC 提升足以让您停下来。

如果它不是服务,您可以使用 %USERPROFILE% 来存储配置设置,但通常,服务在与系统管理员的普通帐户不同的用户凭据下运行。

Dotnet 应用程序可以选择将信息存储到 Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 返回的文件夹中。人们可能需要提升才能在您的服务之外写入该文件夹,但如果他们不喜欢您的管理 UI 并且他们确实喜欢他们的文本编辑器,这与原始问题相同:他们只需要学习如何使用 UAC。

于 2010-03-19T18:35:44.127 回答
2

对于第二个问题:为了快速解决,我将记事本添加到 Windows 快捷栏,右键单击,以管理员身份运行,打开文件,进行更改并保存。

于 2010-03-19T00:49:33.210 回答
0

我们将所有应用程序设置移至数据库。在这里查看我的博客文章 您可以轻松查看如何创建网页以对其进行编辑,并在 Web 应用程序中拥有所有权限。

于 2010-03-19T01:04:50.720 回答