如何让多个 Windows 用户(非管理员)修改并保存相同的设置?

Posted

技术标签:

【中文标题】如何让多个 Windows 用户(非管理员)修改并保存相同的设置?【英文标题】:How do I have multiple windows users (non-admins) modify and save the same setting(s)? 【发布时间】:2019-07-05 15:13:07 【问题描述】:

抱歉,如果这是一个非常简单的问题...

我们有一个由管理员安装的 .NET 应用程序,然后由多名员工使用自己的登录凭据在同一台计算机上运行(普通用户 - 非管理员)。

应用程序使用 MSI 安装程序并安装到 Program Files 文件夹。

应用程序需要将一些有关连接到计算机的设备的设置保存为首选项,因此当用户打开应用程序时,这些设置已设置好,并且不会每次都要求用户提供首选项。这些首选项不应按用户设置,而应按计算机设置。

但是,如果用户 A 更改了计算机上的这些设置之一,那么当用户 B 登录时,他们应该会看到用户 A 更改的设置。 因此,设置需要针对每台计算机,而不是针对每个用户。

在 Windows 7、8、10 等中,应用程序可以保存特定于计算机而非特定于用户的数据,但允许没有管理员权限的用户更改该数据?

我们查看了系统临时文件夹,但计算机具有定期删除临时文件夹内容的 GPO 策略。

还有其他想法吗?

【问题讨论】:

【参考方案1】:

在 HKLM 中更改注册表项的权限需要管理员权限,但一旦完成,获得权限的组中的任何人都可以进行修改。

显然不要更改任何标准键(例如HKLM\SoftwareHKLM\Classes)的权限,但在您自己的应用程序区域(HKLM\Software\YouCorp\YouApp\Attached Devices)中,可以按照您喜欢的方式调整权限。

您只需将“将HKLM\Software\YouCorp\YouApp\Attached Devices 的写入权限授予用户组”作为安装程序的操作之一。

如果您对注册表过敏,您可以对应用程序安装的子目录执行相同操作(例如 %ProgramFiles%\YouCorp\YouApp\Device Settings

【讨论】:

或者,使用%ProgramData%\Your_Organization\Your_Application。任何用户都可以创建%ProgramData% 的子目录并授予其他用户/组访问权限。 @eryksun:这不是真的。默认权限仅允许管理员进行更改。其中之一(在安装期间)必须向普通用户授予写入权限。 您错过了这样一个事实,即“BUILTIN\Users”被授予创建%ProgramData% 子目录的权利,并且有一个“CREATOR OWNER”ACE 授予用户所有访问权限。 作为参考,这里是%ProgramData% 上的security descriptor,由 Sysinternals accesschk.exe 列出。【参考方案2】:

假设您使用的是 .Net 应用程序,您可以将信息存储在与应用程序关联的 app.config 文件中。

【讨论】:

以上是关于如何让多个 Windows 用户(非管理员)修改并保存相同的设置?的主要内容,如果未能解决你的问题,请参考以下文章

windows系统非admin用户进入dos后如何执行命令的时候使用管理员权限执行

MantisBT如何让管理员控制用户密码

亲么 请问不是系统管理员如何修改系统时间呢?急急急

用户管理

如何防止标准 Windows 10 用户的卸载程序提升?

如何让Windows 8/Windows 10用户也用上Docker