2009-10-22 52 views
1

我有一个.NET客户端应用程序,它间歇性地失去了连接到UNC共享,其中用户在域中或者服务器上具有相同凭据的本地帐户。 SO和Google都有很多使用LogonUser和WNetAddConnection的示例,但都需要用户的密码。我们所有的应用程序都需要明确地打开与UNC的连接,复制文件并明确关闭连接而不提供凭据 - 换句话说,使用当前的凭证。任何人都可以指出我在正确的方向如何在C#中做到这一点?打开/关闭连接到没有凭据的UNC

回答

1

根据WNetAddConnection2函数的文档,您可以传递Null作为用户名以使用当前进程的用户上下文。我假设这意味着它将使用运行您的客户端应用程序的帐户的安全上下文。 MSDN也说为了使用与指定的任何用户名关联的密码,传入Null作为密码。

也许将两者都设为Null将会神奇地工作。

+0

谢谢你的回答,克里斯。我发现部分文档,并在发布之前实际尝试过。它似乎工作,因为传递null时没有发生错误,但我很难在调用WNetCancelConnection2之后证明连接已关闭。有什么我应该找的服务器上? – flipdoubt 2009-10-27 13:30:18

+0

在服务器上,唯一想到的是进入计算机管理并进入系统工具 - >共享文件夹 - >打开会话,看看是否有证据表明客户端连接到给定的共享。如果服务器运行的是Windows 2008,则可以启动“共享和存储管理”管理单元以查看相同的信息。我假设会在文件复制过程中为给定用户显示一个会话,然后在调用WNetCancelConnection2之后不久消失。我总是将该函数的最后一个参数设置为1来强制断开连接。 – 2009-10-27 16:47:34