我不是在寻找用户SID.我正在寻找计算机SID,活动目录将用于唯一标识计算机.我也不想查询活动目录服务器,我想查询计算机本身.
我有一个运行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) 我有一个USB设备,在命令时使用不同的接口,VID,PID和序列号进行枚举,并且我想在发生此更改后跟踪物理设备.我的想法是通过它的枢纽和港口位置来跟踪它.
该Win32_PnPSignedDriver类有一个"位置"栏,似乎是完美的(例如Port_#0001.Hub_#0010),但它仅包含设备的位置是第一次加载驱动程序时.将硬件插入不同的端口不会更新该字段.
但是,该信息在某处可用,因为在通过"设备管理器"查看设备时,"详细信息"选项卡下有"位置信息"字段.可以通过WMI查询或其他方法检索此信息吗?有没有更好的方法来解决这个问题?
编辑:我知道这听起来像一个奇怪的场景.这些设备中的微控制器包含一个枚举为CDC设备(即串行端口)并允许编程的ROM.在制造过程中,跟踪设备,因为它在制造商的ROM(唯一的VID/PID /序列号)和我的自定义固件接口(不同的VID/PID /序列号)之间变化是有益的.
我想在此查询后找到一些结果,但在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.
有人有想法吗?
如何获取特定SQL Server的SQL代理服务的服务帐户名称(SQL 2005).是否可以使用SQL语句或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)
效果很好
我想查询WMI的WCF服务信息,但我不想使用PowerShell或CIM Studio.这样做的任何其他工具(命令行也很酷)?
感谢一些其他有用的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#的新手,必须在C#中开发Windows Form应用程序.此应用程序应跟踪以下内容.
我可以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文件系统修改,以及是否有任何专家可以共享查询.我希望阿尔沙德能够在这方面提供帮助.