通过控制台应用程序检查远程计算机上是否存在文件

时间:2014-06-03 13:03:15

标签: c# .net remote-access

首先 - 我对.net开发还是比较新的。现在,因为那已经不在了。我正在创建一个报告控制台应用程序,它将访问远程计算机并检查每台计算机上是否存在某个.png,并报告图像是否存在或是否存在错误,以及该错误的消息。我正在读取IP地址的CSV。目前,我的应用程序会将CSV读入列表。然后,我们遍历将IP地址附加到文件路径开头的列表(即\\10.155.191.239\c$\ProgramStuff\BlahBlah\StorePCMenu\Data\myAssets\App_Icons.png)。在控制台应用程序的开头,我引出用户的凭据。我正在使用。\ desktop用户凭据,这应该足以满足我的所有要求。

我的问题>应用程序报告错误否定。此外,如果远程计算机拒绝凭据,它只会向我显示一般错误消息,而不是与拒绝凭据有关的消息。

我们目前正在使用PinvokeWindowsNetworking类来验证凭据。但是,我无法弄清楚如何让该类报告凭证是否是实际问题。因此,我包含了ManagementScope类,我可以使用它来向我显示凭据是否经过验证(使用。\ desktop以外的凭据)。但是,此ManagementScope类似乎不想使用。\ desktop凭据。

foreach (myStruct record in myList)
{
    try
    {
        //ManagementScope myScope = new ManagementScope("\\\\" + record.myIP + "\\root\\cimv2", myOptions);
        ManagementScope myScope = new ManagementScope("\\\\"+ record.myIP + "\\", myOptions);
        myScope.Connect();
        if (myScope.IsConnected == true)
        {
            try
            {
                logEntry = PinvokeWindowsNetworking.connectToRemote("\\\\" + record.myIP, uName, pWord);
                if (File.Exists("\\\\" + record.myIP +eoPath ))
                {
                    output.WriteLine(record.store + " ," + record.myIP + ", yes");
                    Console.WriteLine(record.store + " ," + record.myIP + ", yes, " + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss"));
                }
                else if (!File.Exists(record.path))
                {
                    if (logEntry.Contains("Error"))
                    {
                        output.WriteLine(record.store + ", " + record.myIP + ", no, " + logEntry);
                        Console.WriteLine(record.store + ", " + record.myIP + ", no, " + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ", " + logEntry);
                    }
                    else
                    {
                        output.WriteLine(record.store + ", " + record.myIP + ", no, File not found");
                        Console.WriteLine(record.store + ", " + record.myIP + ", no, " + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ", File not found");
                    }
                }
            }
            catch (Exception ex)
            {
                output.WriteLine(record.store + ", " + record.myIP + ", no, " + ex.Message);
                Console.WriteLine(record.store + ", " + record.myIP + ", no, " + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ", " + ex.Message);
            }
        }
    }
    catch (Exception ex)
    {
        output.WriteLine(record.store + ", " + record.myIP + ", no, " + ex.Message);
        Console.WriteLine(record.store + ", " + record.myIP + ", no, " + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") +", " + ex.Message);
    }
    finally
    {
        if (!logEntry.Contains("Error"))
        {
            PinvokeWindowsNetworking.disconnectRemote("\\\\" + record.myIP);
        }
    }

对这两个类(MSDN链接除外)的任何解释或使用的建议将不胜感激!我是否需要在客户端和所有这些远程计算机之间打开和关闭套接字?

0 个答案:

没有答案