我的.NET应用程序需要在本地GPO中设置一些组策略设置,并将它们应用于注册表。在某些版本的Windows(例如Pro和Enterprise)上,调整本地GPO并调用RefreshPolicyEx
就足够了--Windows会处理POL数据到Registry的应用。在不支持组策略的版本上,我的程序会自行执行注册表调整。如果我的程序在启用GP的版本上执行此操作会很糟糕,因为这会干扰Windows的簿记。
因此,我需要一种方法来可靠地判断当前的Windows机器是否能够应用本地组策略对象。检查gpedit.msc
或secpol.msc
的存在是否适用于大多数计算机,但某些用户运行this script部分安装了Home版本的组策略基础结构 - 这足以让我的程序混淆但不够实际上让Windows进行注册表调整。让table of SKUs适用于所有当前现有的版本,但是as seen on MSDN,Windows 10引入了许多新代码,我宁愿不必担心不断维护表。最后,我可以在操作系统Caption
返回by WMI中检查“Home”或“Starter”等内容,但这看起来也很脆弱。
如何最可靠地确定当前的Windows安装是否可以应用组策略?