我使用mgmtclassgen.exe并获取CIM_DataFile wmi类的包装器(DataFile.cs)类。下面的代码在localhost上工作完美(没有填充credentionals),但是当我连接到远程机器变量returnResult = 9(无效对象)时。但是变量dataFileCollection的大小= 1
var _connectionOptions = new ConnectionOptions();
_connectionOptions.Username = "username";
_connectionOptions.Password = "password";
_connectionOptions.Authority = String.Format("ntlmdomain:{0}", "DOMAIN");
var _managementScope = new ManagementScope(String.Format("\\\\{0}\\root\\cimv2",
"RemotePCName"), _connectionOptions);
var dataFileCollection = DataFile.GetInstances(_managementScope,
@"Name = 'C:\\Windows\\System32\\mapisvc.inf'";
var tempFilePath = "c:\\temp.txt");
if (dataFileCollection.Count > 0)
{
foreach (var dataFile in dataFileCollection.Cast<DataFile>())
{
var returnResult = dataFile.Copy(tempFilePath);
if (File.Exists(tempFilePath))
{
List<string> lines = File.ReadAllLines(tempFilePath).ToList();
File.Delete(tempFilePath);
}
}
}
答案 0 :(得分:2)
尝试以不同方式调整管理范围 也许你可以尝试一下:
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(
"\\\\" + strComputer + "\\root\\CIMV2",
"SELECT * FROM Win32_PerfFormattedData_MSSQLSERVER_SQLServerDatabases");
其中strComputer是远程pc和Win32_Perf的名称...您要查询的类。这对我来说很有用,因为它在本地网络中,但我不确定远程机器的位置。
你也可以去http://www.microsoft.com/en-us/download/details.aspx?id=8572这是微软的WMI查询生成器。这允许您在C#,VB和VB脚本中生成查询。在设置连接属性时。 可能值得一试。