0

我们可以从与我们的 PC 位于同一域中的远程 PC 读取事件日志,而下面的代码没有任何问题。如您所见,我们与“EventLogSession”建立了联系。但是,如果我们尝试从位于另一个网络区域(生产机器区域)并且不是域成员的远程 PC(Win XP)读取事件日志数据,我们总是会收到错误:“没有更多可用的端点端点映射器”附加信息:由于机器不在域中,我们将“域”定义为空或“”。我们检查了远程PC端,机器上的所有防火墙都被禁用了。我们已经用几台远程 PC(生产机器)进行了这个测试。但总是同样的错误。有什么问题?我们可以使用“EventLogSession”吗 连接?WinXP对此是否有障碍?我使用的远程用户在远程 PC 上具有完全的管理员权限。

 public void Read_EventLog()
    {
        try
        {

            string queryString = "*[System/Level=2]"; // XPATH Query
        SecureString pw = new NetworkCredential("", "Password").SecurePassword;

        EventLogSession session = new EventLogSession(
                                                           
            "10.92.116.999",                          // Remote Computer
            null,                                     // Domain                
            "remoteuser",                                // Username
            pw,
            SessionAuthentication.Default);

        pw.Dispose();

        // Query the Application log on the remote computer.
        EventLogQuery query = new EventLogQuery("Application", PathType.LogName, queryString);
        query.Session = session;
        query.ReverseDirection = true;

       
            EventLogReader logReader = new EventLogReader(query);

            // Display event info
            DisplayEventAndLogInformation(logReader);
            
        }
        catch (EventLogException e)
        {
            using (StreamWriter sw = File.AppendText((error_path)))
            {

                sw.WriteLine("Eventlog Connection Error=" + e.Message + Convert.ToString(DateTime.Now));
            }
        }

    }       

    private void DisplayEventAndLogInformation(EventLogReader logreader)
    {

        System.IO.File.WriteAllText(eventlog_path, string.Empty);
        using (StreamWriter sw = File.AppendText((eventlog_path)))            
        {
            sw.WriteLine("Read Time=" + Convert.ToString(DateTime.Now)+ Environment.NewLine+ Environment.NewLine);
        }

        for (EventRecord eventInstance = logreader.ReadEvent();
            null != eventInstance; eventInstance = logreader.ReadEvent())
        {
            Console.WriteLine("----------------------------------------------------");
            Console.WriteLine("Event ID: {0}", eventInstance.Id);
            Console.WriteLine("Publisher:{0}", eventInstance.ProviderName);
            Console.WriteLine("Keywords:{0}", eventInstance.FormatDescription());                

            using (StreamWriter sw = File.AppendText((eventlog_path)))
            {
                sw.WriteLine("Id="+ eventInstance.Id + "   Provider=" + eventInstance.ProviderName  + "   Detail="+ eventInstance.FormatDescription()+ "   LogTime="+ eventInstance.TimeCreated + Environment.NewLine);

            }             


        }
    }
4

0 回答 0