Articles of wmi

有没有像Linux的WMI?

我喜欢整个WMI的概念,而且我真的可以在Linux下使用它(在某些脚本中)。 有没有这样的Linux系统?

用VBScript查找USB驱动器号

我在http://network-blog.lan-secure.com/2008/03/usb-detection-using-wmi-script.html上find了这个脚本 strComputer = "." '(Any computer name or address) Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set wmiEvent = wmi.ExecNotificationQuery("select * from __InstanceOperationEvent within 1 where TargetInstance ISA 'Win32_PnPEntity' and TargetInstance.Description='USB Mass Storage Device'") While True Set usb = wmiEvent.NextEvent() Select Case usb.Path_.Class Case "__InstanceCreationEvent" WScript.Echo("USB device found") Case "__InstanceDeletionEvent" WScript.Echo("USB device removed") Case […]

Python:使用wmi远程启动可执行文件

我试图在Windows上使用wmi模块远程运行可执行文件。 它build立了连接,但我认为我的stream程线是不正确的,因为当我检查服务器时,可执行文件肯定没有运行。 你们可以帮我在这个语法? import wmi, time ip = '10.12.62.186' username = "administrator" password = "CLARiiON!" from socket import * print "Establishing connection to %s" %ip connection = wmi.WMI(ip, user=username, password=password) print "Connection established" print "Starting IO" connection.Win32_Process.Create(CommandLine='cmd.exe C:\Users\Public\Desktop\Auto_IOX.exe') time.sleep(60)

快速replaceWin32_NetworkAdapter WMI类获取本地计算机的MAC地址

TL;这个问题的DR版本:WMI Win32_NetworkAdapter类包含我需要的信息,但速度太慢。 什么是获取Windows上的MACAddress,ConfigManagerErrorCode和PNPDeviceID列信息的更快速的方法? 我需要检索附加networking适配器的信息,以便我可以获取MAC地址来唯一标识本地Microsoft Windows计算机。 WMI Win32_NetworkAdapter类似乎有我正在寻找的信息。 MACAddress,ConfigManagerErrorCode和PNPDeviceID列是我真正需要的唯一的: MAC地址:MAC地址(此操作的目标) ConfigManagerErrorCode:允许我确定适配器是否已启用并正在运行。 (如果它被禁用,那么我应该使用以前由我的应用程序caching的MAC地址,如果可用的话)。 PNPDeviceID:通过检查前缀“PCI”(可能还有其他接口,如有必要),我可以过滤出非物理适配器,其中有几个在我的Windows 7盒子上(包括虚拟适配器,如VMware / VirtualBox) 。 我的计划是使用PNPDeviceID过滤非物理设备。 然后,我将使用任何剩余表项上的MACAddress列(将地址保存到caching中)。 当设备被禁用(可能由非零ConfigManagerErrorCode指示),MACAddress为空时,我可以从我的caching中为该设备使用以前看到的MAC地址。 你可以在我的Windows 7电脑上看到这个表格的内容。 你可以看到里面有很多垃圾,但是只有一个带有“PCI”PNPDeviceID的条目。 wmic:root\cli>NIC GET Caption, ConfigManagerErrorCode, MACAddress, PNPDeviceID Caption ConfigManagerErrorCode MACAddress PNPDeviceID [00000000] WAN Miniport (SSTP) 0 ROOT\MS_SSTPMINIPORT\0000 [00000001] WAN Miniport (IKEv2) 0 ROOT\MS_AGILEVPNMINIPORT\0000 [00000002] WAN Miniport (L2TP) 0 ROOT\MS_L2TPMINIPORT\0000 [00000003] WAN Miniport (PPTP) 0 […]

从窗口应用程序开始,用于检索安装在远程PC上的软件和硬件列表

我想创build一个应用程序,可以给我一个通过本地networking连接的计算机上安装的所有软件和硬件的描述。 在硬件描述 – 我想要的东西就像在设备pipe理器中显示的列表和软件描述我想要的所有软件安装在远程PC列表中,如“添加和删除程序”所示。 我应该如何开始这个。 我需要执行的 我之前没有使用过任何API,所以我可以实现它们。

如何根据设备实例ID可靠快速地获取网卡的MAC地址

给定一个网卡的设备实例ID ,我想知道它的MAC地址。 集成英特尔千兆位卡的系统示例设备实例ID: PCI\VEN_8086&DEV_10CC&SUBSYS_00008086&REV_00\3&33FD14CA&0&C8 到目前为止,我使用的algorithm如下所示: 用DIGCF_DEVICEINTERFACE调用DIGCF_DEVICEINTERFACE 。 调用SetupDiEnumDeviceInfo来获取SP_DEVINFO_DATA的返回设备。 使用GUID_NDIS_LAN_CLASS调用SetupDiEnumDeviceInterfaces以获取设备接口。 为此返回的设备接口调用SetupDiGetDeviceInterfaceDetail 。 这将得到设备path为string: \\?\pci#ven_8086&dev_10cc&subsys_00008086&rev_00#3&33fd14ca&0&c8#{ad498944-762f-11d0-8dcb-00c04fc3358c}\{28fd5409-15bd-4c06-b62f-004d3a06f852} 在这一点上,我们有一个地址到网卡驱动程序的界面。 使用#4的结果使用CreateFile打开它。 使用IOCTL_NDIS_QUERY_GLOBAL_STATS和OID_802_3_PERMANENT_ADDRESS调用DeviceIoControl以获取MAC地址。 这通常起作用,并且已经在相当多的机器上成功使用。 但是,看起来只有less数机器具有networking驱动程序,它们在步骤#6中没有正确响应DeviceIoControl请求; 即使将网卡驱动程序更新到最新,问题仍然存在。 这些更新,基于Windows 7的计算机。 具体来说, DeviceIoControl成功完成,但返回零字节,而不是包含MAC地址的预期的六个字节。 一个线索似乎在IOCTL_NDIS_QUERY_GLOBAL_STATS的MSDN页面上: 此IOCTL将在以后的操作系统版本中被弃用。 您应该使用WMI接口来查询微型端口驱动程序信息。 有关更多信息,请参阅NDIS对WMI的支持。 – 也许更新的网卡驱动程序不再实现这个IOCTL? 那么,我应该如何做到这一点? 是否有可能在我的方法中有一个疏忽,我正在做一些微小的错误? 还是我需要采取更多不同的方法? 一些替代方法似乎包括: 查询Win32_NetworkAdapter WMI类:提供所需的信息,但由于可怕的性能而被拒绝。 请参阅Win32_NetworkAdapter WMI类的快速replace以获取本地计算机的MAC地址 查询MSNdis_EthernetPermanentAddress WMI类:看起来是IOCTL_NDIS_QUERY_GLOBAL_STATS的WMIreplace,并直接从驱动程序查询OID – 这个工作在麻烦的networking驱动程序上。 不幸的是,返回的类实例只提供MAC地址和InstanceName ,这是一个本地化的string,如Intel(R) 82567LM-2 Gigabit Network Connection 。 查询MSNdis_EnumerateAdapter生成一个将InstanceName关联到DeviceName的列表,如\DEVICE\{28FD5409-15BD-4C06-B62F-004D3A06F852} 。 我不知道如何从DeviceName转到即插即用设备实例ID( PCI\VEN_8086…… )。 调用GetAdaptersAddresses或GetAdaptersInfo (不build议使用)。 […]

如何使用C#读取WMI中的ManagementObject集合

我在网上find了一个代码,并试图获得更多有关莫[]的信息 。 我正在尝试获取ManagementObjectCollection中包含的所有信息。 由于mo中的参数正在寻找一个我不知道的string值,我怎么才能得到所有的值而不知道它的参数值。 或者,如果我想在ManagementObjectCollection获取与mo相关的所有索引值 ManagementObjectSearcher objOSDetails = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); ManagementObjectCollection osDetailsCollection = objOSDetails.Get(); foreach( ManagementObject mo in osDetailsCollection ) { _osName = mo["name"].ToString();// what other fields are there other than name _osVesion = mo["version"].ToString(); _loginName = mo["csname"].ToString(); }

在Windows 7/8/10 Win32 C ++中检测/识别显示器连接的端口(HDMI,其他)

我能够检测到所有连接到我的系统的显示器。 我能够使用以下Windows API调用获取大量的相关信息: EnumDisplayMonitors GetMonitorInfo EnumDisplayDevices 我正在开发的系统是带2个显示器的AIO(一体机)。 它有一个外部HDMI输出,我可以连接和外部显示器。 然后,通过端口复制器,我可以连接第四台显示器。 所有的显示器扩展我的桌面,他们都工作正常。 我的任务是检测通过HDMI端口连接的显示器。 我能够使用上述API提取的监视器信息不会提供任何特定的信息,通过它我将能够检测端口types(例如HDMI或USB)。 有谁知道使用什么API? 谢谢!

从Win32_PrintJob获取总页数

Win32_PrintJob WMI类有很多属性。 (请参阅MSDN上的Win32_PrintJob ) 我有一个小型的.NET应用程序,可以打印作业并显示作业的信息。 TotalPages propery给出了发送的页面数量。 但是这个数字没有考虑到用户请求的拷贝数量。 所以,如果用户想打印两页文档的5份副本, TotalPages的值将是2,而不是10。 如何获得打印作业的副本数量,或者获取要打印的页面总数(副本数量乘以作业中的页面数量)? 谢谢

在C ++中使用WMI来获取适配器的InterfaceIndex

我已经写了一些代码来初始化COM并通过使用WMI查询Win32_NetworkAdapter类来枚举连接到PC的networking适配器。 我需要使用WMI的原因是我需要枚举的适配器在此时被禁用,但我仍然需要find它的InterfaceIndex,并使用GetInterfaceInfo只检测启用的适配器。 这一切都编译和运行,但在线: hr = pEnumerator->Next(WBEM_INFINITE, 1, &pClassObj, &ulReturnVal); 这意味着检索第一个适配器,它不返回任何设备和垃圾HRESULT。 我用这个页面上的例子作为我的指导。 CoInitialize(NULL); // Initialize COM HRESULT hr = NULL; hr = CoInitializeSecurity( NULL, // security descriptor -1, // use this simple setting NULL, // use this simple setting NULL, // reserved RPC_C_AUTHN_LEVEL_DEFAULT, // authentication level RPC_C_IMP_LEVEL_IMPERSONATE, // impersonation level NULL, // use this simple setting […]