错误:System.IO.IOException:找不到网络路径

时间:2013-02-08 12:17:38

标签: c# wmi remote-access registrykey

当我执行以下代码时会出现错误,请帮我解决此问题。

 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

请帮我解决这个问题,在机器名称字段中如何进入远程机器,当它有v.i.com时,但系统名称只是v。

4 个答案:

答案 0 :(得分:14)

如果查看堆栈跟踪,可以看到尝试打开远程注册表项时发生故障。

这意味着远程注册表服务未在目标计算机上运行。在v.i.com上,打开服务控制面板( services.msc )并启动名为远程注册表的服务。

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

答案 1 :(得分:2)

我假设您指定的machineName“Venus.InsTIL.com”无法通过此路径联系。 UNC的机器路径是什么?您是否已验证机器是否可以联系(ping,UNC文件浏览等)?

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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