You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取本地启用用户账户的WMI查询WHERE子句错误排查

解决Win32_UserAccount过滤未禁用账户的WQL查询问题

嗨,我来帮你搞定这个WMI查询的坑!你之前的写法报错,是因为WQL(WMI查询语言)里对布尔类型属性的判断规则和C#不一样——Win32_UserAccount的Disabled属性是用整数来表示状态的:0对应未禁用,1对应已禁用,不能直接用False或者NOT Disabled这种写法。

正确的查询写法

直接用数值对比就能解决问题,两种写法都可以:

  1. 直接筛选未禁用账户(推荐)
SelectQuery sQuery = new SelectQuery("Win32_UserAccount WHERE Disabled = 0");
var searcher = new ManagementObjectSearcher(sQuery);
  1. 排除已禁用账户
SelectQuery sQuery = new SelectQuery("Win32_UserAccount WHERE NOT Disabled = 1");

额外优化:只获取本地账户

如果你的需求是本地计算机的账户,还可以加上LocalAccount = 1的条件,避免返回域账户:

SelectQuery sQuery = new SelectQuery("Win32_UserAccount WHERE Disabled = 0 AND LocalAccount = 1");

这样查询出来的结果就是你需要的:本地未禁用、带有SID的用户账户列表啦。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:32:41