【问题标题】:Network Drive Not Available On Startup网络驱动器在启动时不可用
【发布时间】:2012-04-05 13:47:35
【问题描述】:

我有一个 C# 应用程序,它在启动时加载,并将数据记录到安装为 X 的网络驱动器:

当机器首次启动时,应用程序会抛出 X:\ 不可用的错误。如果我重新启动应用程序,同样的错误。

但是,如果我打开 Windows 资源管理器并双击浏览驱动器,我可以运行该应用程序,它会连接到 X:就好了。

网络驱动器在启动时不会自动初始化,尽管已映射?有没有办法将它们设置为自动初始化?

【问题讨论】:

  • 根据网络连接,当您启动系统时,它们需要一些时间来映射和连接。您可能需要增加时间或添加功能来等待并检查网络是否已映射,并且仅当它超过设定的阈值或时间时才抛出错误。
  • @rs:我已经尝试等待超过 10 分钟,但似乎从来没有映射它们。

标签: c# .net-4.0 network-drive windows-xp-embedded windows-networking


【解决方案1】:

我遇到了完全相同的问题。我不知道是否有更好的方法,但我在访问映射驱动器之前将其添加到我的代码中。

Process mapDrive = new Process();
mapDrive.StartInfo.FileName = "net.exe";
mapDrive.StartInfo.Arguments = @"use c: \\server\share";
mapDrive.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
mapDrive.Start();

这样无论驱动器在启动时是否可用,它都将始终可用。

【讨论】:

  • 这可行,但是需要在配置文件中输入目录的路径,然后在启动时读取该文件。它可能在网络驱动器上,也可能在本地驱动器上。在尝试安装它之前,我需要检查它是本地的还是网络的。有点乱。 windows中没有办法自动挂载驱动器吗?
  • “windows中没有办法自动挂载驱动器吗?”...如果有,我也想知道。
  • 我决定这样做,因为我找不到任何其他选择。不过,您可能需要先使用StartInfo.Arguments = @"use x: /d"; 断开驱动器的连接。此外,您可能希望将 Windows 设置为在空闲时不自动断开网络驱动器 - net config server /autodisconnect:-1
【解决方案2】:

请参阅此处的How Can I Access a Mapped Network Drive 以获取要检查的事项列表。我的猜测是您的用户不存在该驱动器,或者访问它时存在权限问题。另一个要检查的项目是order in which you call Impersonate,假设你这样做了。

根据Cannot Access Files On Mapped Drive From Windows Service,您根本不应该这样做。请参阅已接受答案中提供的 Microsoft 链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2019-11-15
    • 2016-05-28
    相关资源
    最近更新 更多