wmi c#。从远程机器复制文件

时间:2012-10-31 12:26:41

标签: c# copy wmi remote-server

我使用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);
                        }
                    }
                }

1 个答案:

答案 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脚本中生成查询。在设置连接属性时。 可能值得一试。