首页 > 解决方案 > 使用 WNetUseConnection 时如何在客户端计算机上显示凭据对话框?

问题描述

我正在开发一个 Web 应用程序,我需要在其中连接远程机器以访问其共享驱动器上的文件。在授予对这些文件的访问权限之前,需要对用户进行身份验证。我正在使用 WNetUseConnection 来提示凭据对话框。

WNetUseConnection(IntPtr.Zero, nr, "", "", CONNECT_INTERACTIVE | CONNECT_PROMPT, null, null, null);

问题在于它在托管此应用程序的服务器上打开对话框,而不是在客户端计算机上。你能帮我在客户端机器上打开对话框吗?

谢谢!!!

示例代码:

网络层:

    Public static Connect(string remoteUnc, string username, string password, bool promptUser)
    {
        NETRESOURCE nr = new NETRESOURCE
        {
            dwType = RESOURCETYPE_DISK,
            lpRemoteName = remoteUnc
        };

        int result;
        if (promptUser)
        {
            result = WNetUseConnection(IntPtr.Zero, nr, "", "", CONNECT_INTERACTIVE | CONNECT_PROMPT, null, null, null);
        }
        else
        {
            result = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null);
        }

        if (result != NO_ERROR)
        {
            throw new Win32Exception(result);
        }
    }

用法:

somefunction { using (NetworkLayer netAccess = NetworkLayer.Connect(hostName,null,null,true)) { //一些逻辑 } }

网页接口:

  [HttpGet]

    public IActionResult RetrieveServerDetails(string hostname)
    {
        try
        {
            some function(hostname);
        }
        catch (Exception ex)
        {
            return InternalServerError(ex);
        }`enter code here`
    }

然后从 jquery 调用它。

标签: c#remote-access

解决方案


推荐阅读