我有一个项目要删除用户的管理员权限。我们在升级期间使用的应用程序针对 WMI 运行查询:
Namespace: root\Microsoft\sqlserver\computermanagement10
Class: sqlserviceadvancedproperty
由于我已从用户中删除了管理员权限,因此在查询该命名空间和类时无法返回任何数据,因此安装失败,提示未安装适当的 SQL Server 版本。
我尝试从上到下向命名空间添加权限,但没有成功。如果我将管理员权限重新添加到设备上的用户帐户,查询将再次有效。
我正在使用 powershell 来测试:
gwmi -namespace root\Microsoft\sqlserver\computermanagement10 -class sqlserviceadvancedproperty
当我以非管理员权限运行此程序时,它不会给出任何错误或任何提示。它只是返回 null 并将我带回命令提示符。以管理员权限运行,我得到了一大堆数据。
是否有人知道用户需要访问 Windows 中的哪些特定项目才能查询特定的 WMI 命名空间?
答案1
据我所知,这些是需要获得许可的地点:
目录:\Windows\System32\WBEM
HKLM\SOFTWARE\Microsoft\WBEM
WMI 管理 (wmimgmt.msc) 中的适当权限
这些信息似乎对我的原帖没有帮助。验证这些信息后,我以本地管理员身份登录后,没有得到相同查询的结果。
事实证明,我在 GPO 中添加 MSSQLSERVER 服务权限时遗漏了一个帐户。内置帐户“SERVICE”必须对该服务具有读取权限,否则您将无法查询该 WMI 类。如果您
sc sdshow mssqlserver
从命令行来看,“SERVICE”的 SDDL 应如下所示:
(A;;CCLCSWLOCRRC;;;SU)
如果您必须处理 SDDL 字符串,我发现这些非常有用: