【问题标题】:WNetAddConnection2 does not work from Windows 2008 R2WNetAddConnection2 在 Windows 2008 R2 中不起作用
【发布时间】:2011-11-08 07:08:34
【问题描述】:

我正在尝试使用 WNetAddConnection2 通过我的 ASP.NET Web 应用程序连接到网络位置。当我使用与 VS2010 一起提供的 ASP.NET 开发服务器对其进行调试时,一切都运行良好。但是当我在 Windows Server 2008 R2 中部署代码时,它不会放置文件并引发 Win32 异常,错误代码为 0X80004005。应用程序池身份是网络服务,我正在使用域用户帐户进行代理。

我已经使用该命令检查了连接性和用户名密码的有效性,它在服务器 runas /netonly /user:DOMAIN\User "explorer.exe \Path" 上运行良好

另请注意,我的防火墙已关闭,并且我没有在 Windows Server 2008 上运行防病毒软件。

非常感谢任何帮助。

我使用了How to provide user name and password when connecting to a network share的示例代码

【问题讨论】:

    标签: .net asp.net


    【解决方案1】:

    从 Windows Vista 开始,Windows 服务在安全方面的行为有所不同,并且不允许任何“与桌面相关的活动”(例如挂载某些东西)...

    ASP.NET 在作为服务运行的 IIS 下运行 - 您尝试的操作不受支持,只能通过规避权限等问题来实现。

    不确定您要达到的目标是什么?

    也许有不同的方式来实现这个目标......

    【讨论】:

    • 我的 ASP.NET 应用程序生成一个 CSV 文件,我需要将它放到网络路径(具有特定权限)。另一种方法是在本地创建此 CSV 并使用另一个程序(Windows servive 或计划任务控制台应用程序)来选择此文件并拖放到网络位置。认为这是最简单的方法 - 基于人们得到这个工作的文章...corner-house.blogspot.com/2006/03/…
    • 我理解那段代码,但正如我所说:Vista 改变了这些事情,如果你不想认真地处理权限,你就不能让它以这种方式工作......我建议只需生成 CSV,将其存储在本地,任何需要它的人都可以通过 HTTP URL / GET 获取...这可以是计划作业或真正在服务之外运行的任何应用程序...
    • 我已将代码移至配置了计划任务的控制台应用程序。但是,我看到 WNetAddConnection2 的间歇性行为。他们还有其他方式连接到网络共享吗?该代码工作了一次,但之后它失败并出现同样的错误。
    • 驱动器不只是通过 Windows 资源管理器永久映射一次并随后被控制台程序使用的任何原因?
    • 是的,但是(当用户注销时)您的控制台应用程序也没有运行,或者?并且当用户再次登录时,映射又回来了 - 至少当你做的时候是持久的......
    【解决方案2】:

    WNetUseConnection 将起作用,我们需要正确定义它的所有结构。 WNetUseConnection(IntPtr.Zero, nr, 密码, 用户名, 0, null, null, null);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-11
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      相关资源
      最近更新 更多