【问题标题】:Can't access mapped network drive无法访问映射的网络驱动器
【发布时间】:2017-08-23 14:34:55
【问题描述】:

我有一个 ConsoleApp(不是 asp.net),它从目录中获取文件(该应用程序在 Windows Server 2012 上运行)。 该应用程序适用于本地目录甚至共享目录(例如“\\MyShare\dest”)。但是,当我将共享映射(从“\\MyShare 到 X:”)时,我得到了

DirectoryNotFoundException。

我必须映射驱动器,因为某些文件超过了 260 个字母的限制。 此外,当我在我的电脑上调试我的应用程序时,我在访问映射驱动器时没有收到错误。

提前感谢您的帮助:)

P.S:我看过其他帖子,问题是应用程序没有以正确的用户权限运行。我的应用程序使用我的凭据运行,因此地图对我的用户存在..

编辑:我在您的帮助下做了一些解决方法,它奏效了。我没有创建映射的网络驱动器,而是使用了mklink 命令,它为我的共享创建了一个快捷方式:

mklink /D c:\MyShortcut \\MyShare

感谢大家的帮助

【问题讨论】:

  • 您是否将应用程序作为计划任务运行?
  • 是否在使用 UAC?你是在无人看管的情况下运行,还是从 VS 运行?您如何访问和使用文件和目录(包括代码)。否则这应该去 serverfault.stackexchange.com
  • @MatSnow windows 服务,应用始终运行
  • @user8506804 Windows 服务正在运行自己的会话。因此,它无法访问您的映射驱动器。更多信息请阅读this

标签: c# console-application network-drive


【解决方案1】:

如果我正确理解了问题和 cmets,则无法访问映射的驱动器,因为映射对应用程序不可见。据我了解,可以使用平台调用以编程方式连接到共享,更准确地说是以下两个函数和结构。

[DllImport("Mpr.dll")] static extern int WNetUseConnection(
    IntPtr hwndOwner,
    NETRESOURCE lpNetResource,
    string lpPassword,
    string lpUserID,
    int dwFlags,
    string lpAccessName,
    string lpBufferSize,
    string lpResult
);

[DllImport("Mpr.dll")] static extern int WNetCancelConnection2(
    string lpName,
    int dwFlags,
    bool fForce
);

[StructLayout(LayoutKind.Sequential)] class NETRESOURCE
{ 
    public int dwScope = 0;
    public int dwType = 0;
    public int dwDisplayType = 0;
    public int dwUsage = 0;
    public string lpLocalName = "";
    public string lpRemoteName = "";
    public string lpComment = "";
    public string lpProvider = "";
}

函数记录在hereherethisthis 问题可能相关。

【讨论】:

    【解决方案2】:

    一种可能性是您的应用程序在提升模式下运行(即选择了Run as administrator)。更详细地讨论了这个问题here

    解决方案是使用net use 安装驱动器,mklink 就像您所做的那样,或者只是将其合并到您的注册表中:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
    "EnableLinkedConnections"=dword:00000001
    

    进行上述更改后需要重新启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      相关资源
      最近更新 更多