我的公司生产一个跨平台的服务器应用程序,它从用户可编辑的配置文件加载其配置。在Windows上,配置文件ACL由我们的安装程序锁定,以允许所有用户读取,但仅限于编辑到管理员和本地系统。
不幸的是,在Windows Server 2008上,即使是本地管理员也不再具有管理员权限(因为UAC),除非他们正在运行提升的应用程序。这引起了用户的抱怨,他们无法使用自己喜欢的文本编辑器打开并保存配置文件更改 - 他们可以打开文件(因为任何人都可以阅读)但无法保存。
我们的应用安装程序中有人建议我们可以做些什么(如果有的话),以便在Windows Server 2008上更轻松地为管理员编辑?
相关问题:如果Windows Server 2008管理员想要编辑仅限管理员的配置文件,他通常如何操作?他是否被迫使用一个足够聪明的文本编辑器,以便在需要提升时自动提升,就像Windows资源管理器响应访问被拒绝错误一样?他是否从提升的命令提示符窗口启动编辑器?还有别的吗?
答案 0 :(得分:5)
在我看来,没有设法右键单击记事本并选择“以管理员身份运行”的管理员不应该是管理员,但是......在现实生活中有这样的管理员。 / em>的
UAC的工作原理是从用户的安全令牌中禁用管理员组SID,直到您运行具有提升权限的程序。当以非提升模式运行时,遗憾的是无法利用管理权限。
一个解决方法,不幸的是需要一些非常重要的工作,可能是:
小应用程序应该做的唯一事情就是在注册表中找到.txt文件的注册处理程序,然后使用它来打开文件 - 使用提升的权限。
答案 1 :(得分:4)
对于值得他们的盐的管理员来说,这并不复杂。打开文本编辑器提升,打开文件,保存,完成。大多数编辑配置文件的人现在都习惯了这种仪式。 Unix人员反复这样做(使用sudo);它在Windows上很难,因为对于某些用户来说,它仍然是一个稍微不熟悉的领域。
实际上,如果它是HKLM注册表设置,他们会遇到同样的问题,除非他们必须提升regedit或Powershell或者他们通常用来编辑注册表设置的任何内容。
如果他们无法弄明白,他们可以选择完全禁用UAC,或将其调低一两档,但我怀疑他们是否无法弄清楚如何打开编辑器会增加这会产生更多问题它会解决。
在对系统范围的配置文件进行重大更改之前, 应该进行思考。如果您不打算进行全系统的更改,那么UAC的提升就足以让它暂停。
如果它不是服务,您可以使用%USERPROFILE%来存储配置设置,但通常,服务使用与sysadmin的普通帐户不同的用户凭据运行。
Dotnet应用程序可以选择将信息存储到Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)返回的文件夹中;人们可能需要提升才能写入服务之外的文件夹,但如果他们不喜欢你的管理界面,他们喜欢他们的文本编辑器,那就和原来的问题一样:他们只需要学习如何使用UAC。 / p>
答案 2 :(得分:2)
对于第二个问题:为了快速解决方案,我将记事本添加到Windows快捷工具栏,右键单击,以管理员身份运行,打开文件,进行更改并保存。
答案 3 :(得分:0)
我们将所有应用设置都移到了数据库中。 请参阅我的博客文章here.您可以轻松了解如何创建网页以进行编辑,并将所有权限置于Web应用程序中。