Tag: wql

为什么“Win32_CDROMDrive”类的“SerialNumber”属性在与WMI分开请求时返回null?

当从这个SELECT SerialNumber FROM Win32_CDROMDrive获取WMI类Win32_CDROMDrive中的属性SerialNumber的值时,它会通过NullReferenceException除非我将查询更改为SELECT * FROM Win32_CDROMDrive 。 然后循环arround所有属性,包括SerialNumber in – 在这种情况下不是null。 由于第一种方法比第二种方法更快(不太确定),我更喜欢使用它。 那么发生了什么? 我错过了什么吗? 请注意,它与其他属性和类完美匹配! 这是我的代码 string result = “”; var searcher = new ManagementObjectSearcher(“SELECT SerialNumber FROM Win32_CDROMDrive”); ManagementObjectCollection collec = searcher.Get(); foreach (ManagementObject obj in collec) { result = obj[“SerialNumber”].ToString(); break; } MessageBox.Show(result); 除非我改为: var searcher = new ManagementObjectSearcher(“SELECT * FROM Win32_CDROMDrive”); 更新 […]

我有一个用户帐户的SID,我想要它所属的组的SID

这必须从远程机器获得。 以下查询不适用于SID,但适用于组和帐户名称。 “SELECT GroupComponent FROM Win32_GroupUser WHERE PartComponent = \”Win32_UserAccount.Domain='” + accountDomain + “‘,Name='” + accountName + “‘\”” 它返回的Win32_Group对象以字符串的forms出现,它们只有域名和名称(即使Win32_Group具有SID属性)。 我有这种下沉的感觉,我将不得不: 通过查询Win32_SID将SID转换为帐户名称; 执行上面的查询; 通过查询Win32_Group将每个结果组名称转换为SID。

使用WMI处理启动事件 – 未检测到所有进程启动

我在Windows服务(运行为NT_AUTHORITY\SYSTEM )中使用以下C#代码来创建用于接收进程创建事件的事件处理程序(使用WMI和WQL): string queryString = “SELECT * FROM Win32_ProcessStartTrace”; ManagementEventWatcher watcher = new ManagementEventWatcher(new WqlEventQuery(queryString)); watcher.EventArrived += new EventArrivedEventHandler(ProcessStartEvent); watcher.Start(); 在ProcessStartEvent : int processId = int.Parse(e.NewEvent.Properties[“ProcessId”].Value.ToString()); Process proc = Process.GetProcessById(processId); Out(“Received process: ” + proc.ProcessName); 我遇到的问题是(出于一些奇怪的原因) 并非每个进程启动都被程序捕获并报告。 如果我同时启动大约6个进程,则可能不会在输出中显示。 我曾尝试使用WMI对捕获进程创建事件进行一些研究,但是可用的信息有限。 我已经看到也可以使用类似的东西捕获进程开始: SELECT TargetInstance FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA ‘Win32_Process’ ( 如此Stack Overflow答案中所示 ) 使用__InstanceCreationEvent和Win32_ProcessStartTrace之间是否有任何重大差异? […]

从C#获取CPU ID代码为C ++

我有这个C#代码来获取处理器ID,但我无法将其传递给C ++,我尝试了很多,但我真的不能,我刚开始使用C ++,我希望能够获得CPU ID C ++就像我以前用C#一样 这是我在C#中的代码: public static string GetProcessorID() { string sProcessorID = “”; string sQuery = “SELECT ProcessorId FROM Win32_Processor”; ManagementObjectSearcher oManagementObjectSearcher = new ManagementObjectSearcher(sQuery); ManagementObjectCollection oCollection = oManagementObjectSearcher.Get(); foreach (ManagementObject oManagementObject in oCollection) { sProcessorID = (string)oManagementObject[“ProcessorId”]; } return (sProcessorID); }

这个时间价值的格式是什么?

我有一个WMI查询,以这种格式’20090219000000.000000 + 480’指定时间 有人能告诉我这是什么格式,.NET是否有任何内置function可以使用它? 编辑 此时间值来自我找到的示例查询。 我不知道用什么时间来生成它。 我只需要能够将时间值转换为此格式。 编辑2 我发现这次是CIM_DATETIME格式。