标签: wmi-query

如何使用WMI检索Windows计算机的SID?

我不是在寻找用户SID.我正在寻找计算机SID,活动目录将用于唯一标识计算机.我也不想查询活动目录服务器,我想查询计算机本身.

windows dns wmi identity wmi-query

25
推荐指数
1
解决办法
8万
查看次数

使用WMI查询"RPC服务器不可用"

我有一个运行Server 2008 R2的Web服务器工作组,我正在尝试管理一个检查所有磁盘空间的脚本.我几个月前在设置服务器时设置了这个,我相信它工作正常.现在我去检查并且它发出错误说"RPC服务器不可用".该脚本是一个C#ASP.NET页面,虽然我在PowerShell中尝试过类似的调用但它也会出现同样的错误.该脚本可以正常访问本地计算机的信息,但无法访问远程服务器信息.

我花了最后几个小时挖掘我能找到的一切,但没有任何作用.我已经为WMI(远程和本地),DCOM(远程和本地)以及我正在访问的计算机的整个驱动器设置了权限.我使用了计算机名称,IP地址,完整的计算机名称(xxx.echomountain.com),并尝试在ConnectionOptions对象上进行多次模拟和身份验证设置.

我知道我使用的用户名/密码是正确的,因为我可以访问另一个的分片目录

我可以检查哪些可能导致此错误的任何想法?

ConnectionOptions oConn = new ConnectionOptions();
    oConn.Impersonation = ImpersonationLevel.Impersonate;
    oConn.EnablePrivileges = true;
    oConn.Username = username;
    oConn.Password = password;
    //oConn.Authentication = AuthenticationLevel.PacketPrivacy;
    string strNameSpace = @"\\";

    if (srvname != "")
        strNameSpace += srvname + ".echomountain.com";
    else
        strNameSpace += ".";

    strNameSpace += @"\root\cimv2";

    ManagementScope oMs = new ManagementScope(strNameSpace, oConn);

    //get Fixed disk state
    ObjectQuery oQuery = new ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3");

    //Execute the query
    ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery);

    //Get the results
    ManagementObjectCollection oReturnCollection …
Run Code Online (Sandbox Code Playgroud)

c# asp.net wmi rpc wmi-query

12
推荐指数
1
解决办法
3万
查看次数

是否可以以编程方式为Windows中的设备识别物理USB端口?

我有一个USB设备,在命令时使用不同的接口,VID,PID和序列号进行枚举,并且我想在发生此更改后跟踪物理设备.我的想法是通过它的枢纽和港口位置来跟踪它.

Win32_PnPSignedDriver类有一个"位置"栏,似乎是完美的(例如Port_#0001.Hub_#0010),但它仅包含设备的位置是第一次加载驱动程序时.将硬件插入不同的端口不会更新该字段.

但是,该信息在某处可用,因为在通过"设备管理器"查看设备时,"详细信息"选项卡下有"位置信息"字段.可以通过WMI查询或其他方法检索此信息吗?有没有更好的方法来解决这个问题?

编辑:我知道这听起来像一个奇怪的场景.这些设备中的微控制器包含一个枚举为CDC设备(即串行端口)并允许编程的ROM.在制造过程中,跟踪设备,因为它在制造商的ROM(唯一的VID/PID /序列号)和我的自定义固件接口(不同的VID/PID /序列号)之间变化是有益的.

c# windows usb wmi wmi-query

10
推荐指数
1
解决办法
1万
查看次数

c#简单WMI查询中的"无效类"

我想在此查询后找到一些结果,但在foreach循环的开头,出现错误"invalid class".

string wmiQuery = string.Format("SELECT * FROM Win32_Process");
var searcher = new ManagementObjectSearcher(wmiQuery);
var wmiResults = searcher.Get();

foreach (ManagementObject retObject in wmiResults)
 {
   Console.WriteLine("[{0}]\tName: {1}", retObject["ProcessID"], retObject["Name"]);
 }
Run Code Online (Sandbox Code Playgroud)

我使用窗口7 64,我想知道Win32_Process是否存在.我也使用wmi代码创建者从http://www.microsoft.com/downloads/en/details.aspx?familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&displaylang=en下载它, 但我找不到任何Win32_Process.

有人有想法吗?

c# windows wmi wmi-query

10
推荐指数
1
解决办法
1万
查看次数

获取SQL代理服务的服务帐户详细信息

如何获取特定SQL Server的SQL代理服务的服务帐户名称(SQL 2005).是否可以使用SQL语句或WMI?

sql sql-server sql-server-2005 wmi-query

10
推荐指数
4
解决办法
3万
查看次数

通过WMI确定网络适配器类型

我正在使用WMI(Win32_NetworkAdapter)并尝试获取有线或无线连接的物理网络适配器的详细信息,并避免使用虚拟适配器等.

阅读本文后,它解释了您必须对WMI进行一些巧妙的查询以消除虚拟适配器并尝试仅返回真正的物理适配器.

阅读这篇文章,它解释了你可以比较网络适配器"描述"中的文字,看看它是否包括"无线","802.11"或"WLAN",如果是,那么很可能适配器是无线的适配器.

对于今天的.Net版本和其他改进,这些真的是在Windows XP +上确定网络适配器是有线还是无线并且不是来自VM软件等的虚拟适配器的唯一两种方式?如果没有,请解释.

.net c# wmi wmi-query

10
推荐指数
2
解决办法
1万
查看次数

如何构造WMI查询

我想找到名称以param1开头的结果,并以param2结尾但我的代码不起作用

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%' AND Name LIKE '%{1}'", param1, param2);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection = searcher.Get();
Run Code Online (Sandbox Code Playgroud)

怎么了?

比较

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%'", param1);
Run Code Online (Sandbox Code Playgroud)

效果很好

c# wmi string.format .net-4.0 wmi-query

9
推荐指数
2
解决办法
3万
查看次数

有没有办法在不使用PowerShell或CIM Studio的情况下查询WMI?

我想查询WMI的WCF服务信息,但我不想使用PowerShell或CIM Studio.这样做的任何其他工具(命令行也很酷)?

wmi wmi-query windows-7

8
推荐指数
1
解决办法
3万
查看次数

如何在未插入设备时确定设备驱动程序的版本?

感谢一些其他有用的StackOverflow问题,我找到了一种查询WMI设备驱动程序的方法.但是,在我看来,数据存储在不能很好地连接在一起的不同位置.

我有一个使用FTDI驱动程序的USB转串口电缆.我可以查询Win32_SystemDrivers以确定是否已安装驱动程序,如下所示:

SelectQuery query = new SelectQuery("Win32_SystemDriver");
query.Condition = "Name = 'FTDIBUS'";

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection drivers = searcher.Get();
bool installed = (drivers.Count > 0);
Run Code Online (Sandbox Code Playgroud)

但是这个集合并没有告诉我关于版本信息的事情.所以我发现我可以查询Win32_PnPSignedDriver找到设备驱动程序的版本.所以我做的是这样的:

SelectQuery query = new SelectQuery("Win32_PnPSignedDriver");
query.Condition = "DriverProviderName = 'FTDI'";

ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection drivers = searcher.Get();

foreach (ManagementBaseObject driverObject in drivers)
{
    ManagementObject driver = (ManagementObject)driverObject;
    string version = driver["DriverVersion"].ToString();
}
Run Code Online (Sandbox Code Playgroud)

但是,第二个代码块只有在实际插入电缆(设备)时才会成功.我想做的是检查已安装设备驱动程序的版本,无论设备当前是否已插入.

我该怎么做呢?

c# wmi wmi-query

8
推荐指数
1
解决办法
2732
查看次数

如何获取CD/DVD驱动器上的文件更改通知?

我是C#的新手,必须在C#中开发Windows Form应用程序.此应用程序应跟踪以下内容.

  • 监控外部和内部的CD/DVD驱动器.
  • 监视在CD/DVD驱动器上创建,修改和删除的文件.

我可以RegisterNotification通过跟踪方法中的WM_DEVICECHANGE消息来获取CD/DVD驱动器插入的系统通知WndProc.

以上实现让我知道何时将新设备连接到PC.

我面临的问题是如何跟踪CD/DVD上发生的文件更改(写入/修改).一种选择是将CD/DVD中的文件轮询为后台作业.但是,这将是最后一个选择.

我发现IMAPI我们可以通过它写入CD/DVD但我只需要监视文件更改以进行审计.

请指点我如何在我的程序中接收CD/DVD通知上的文件更改?

我试过FileSystemWatcher但它似乎不适用于CD/DVD驱动器.

更新于2018年2月7日:

我能找到的另一种方法是通过WMI附加的查询WMI Events.我找到了一个Best way to detect dvd insertion in drive c#也可以得到答案的问题.我想知道在WMI中是否可以检测到DVD文件系统修改,以及是否有任何专家可以共享查询.我希望阿尔沙德能够在这方面提供帮助.

c# wmi wmi-query wpd imapi

8
推荐指数
1
解决办法
455
查看次数