1

mgmtclassgen.exe を使用して、CIM_DataFile wmi クラスのラッパー (DataFile.cs) クラスを取得します。以下のコードは localhost では (認証情報を入力せずに) 完璧に動作しますが、リモート マシン変数 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);
                        }
                    }
                }
4

1 に答える 1

2

管理範囲を別の方法で調整してみてください。おそらく、次のように試すことができます。

ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher(
                        "\\\\" + strComputer + "\\root\\CIMV2",
                        "SELECT * FROM Win32_PerfFormattedData_MSSQLSERVER_SQLServerDatabases");

ここで、strComputer はリモート PC の名前で、Win32_Perf... はクエリしようとしているクラスです。リモート マシンがどこにあるかはわかりませんが、これはローカル ネットワーク内にあるため、私にとってはうまくいきます。

Microsoft の WMI クエリ ジェネレータであるhttp://www.microsoft.com/en-us/download/details.aspx?id=8572にアクセスすることもできます。これにより、C#、VB、および VB スクリプトのいずれかでクエリを生成できます。接続プロパティの設定中。試してみる価値があるかもしれません。

于 2012-10-31T12:36:39.380 に答える