5

当我执行以下代码时,它会导致错误,请帮我解决这个问题。

 class MySample
{

    public static void Main()
    {


string eventLogName = "Security";

string sourceName = "BTHUSB";

string machineName = "v.i.com";

EventLog eventLog;

eventLog = new EventLog();

eventLog.Log = eventLogName;

eventLog.Source = sourceName;

eventLog.MachineName = machineName;
foreach (EventLogEntry log in eventLog.Entries.Cast<EventLogEntry>().Reverse())// Entries.Cast<EventLogEntry>().Reverse
{
 Console.WriteLine(") Entry type: {0} , Category: {1},  Data: {2}, ID: {3}, Source: {4} \n", log.EntryType, log.TimeWritten, log.EventID, log.InstanceId, log.Source);
}
}
}

错误是,

  Unhandled Exception: System.IO.IOException: The network path was not found.

  at Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str)
  at Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String ma chineName)
  at System.Diagnostics.EventLog.GetEventLogRegKey(String machine, Boolean writ able)
  at System.Diagnostics.EventLog.Exists(String logName, String machineName)
 at System.Diagnostics.EventLog.OpenForRead(String currentMachineName)
  at System.Diagnostics.EventLog.GetEntryAtNoThrow(Int32 index)
  at System.Diagnostics.EventLogEntryCollection.EntriesEnumerator.MoveNext()
  at System.Linq.Enumerable.<CastIterator>d__aa`1.MoveNext()
    at System.Linq.Buffer`1..ctor(IEnumerable`1 source)    at System.Linq.Enumerable.<ReverseIterator>d__99`1.MoveNext()
 at event.MySample.Main() in E:\.net prep\.net examples\event\event\Program.cs :line 42

请帮我解决这个问题,在机器名称字段中如何输入远程机器,当它有 vicom 时,但该系统名称仅为 v 。

4

4 回答 4

16

如果您查看堆栈跟踪,您会看到尝试打开远程注册表项时发生的失败。

这意味着远程注册表服务没有在目标机器上运行。在 vicom 上,打开服务控制面板 ( services.msc ) 并启动名为Remote Registry的服务。

该服务通常设置为手动启动类型,因此不会自动启动。如果您需要经常远程配置或访问事件日志,请将其设置为自动启动,以便它始终可用。

于 2013-05-15T19:38:23.517 回答
2

我假设您指定的 machineName "Venus.InsTIL.com" 无法通过此路径联系到。机器的 UNC 路径是什么?您是否验证过机器是否可以通过其他方式联系(ping、UNC 文件浏览等)?

于 2013-02-08T12:23:44.863 回答
0

该代码使用什么帐户运行?它可能没有访问网络的权限。这将取决于 Web 服务配置。

另一件事是,最近的操作系统版本不允许严格的本地帐户访问其他系统上的管理共享,这将再次成为该帐户。

于 2013-02-08T12:23:00.587 回答
0

您很可能确实连接到另一台机器。如果连接失败,我希望该错误更像是连接被拒绝或无效凭据。这个异常发生在下一个移动操作(参见堆栈跟踪)上的事实意味着代码在尝试读取不存在的条目时正在读取列表。我的猜测是,当命令创建其列表时,该条目已经存在foreach,但在遍历列表时不存在。我怀疑问题是某些东西正在改变你的数据。

于 2018-02-02T21:13:12.660 回答