如何在C#中从FTP文件夹创建本地机器中的虚拟驱动器?

时间:2010-08-04 06:06:08

标签: c#

  

可能重复:
  How to map an ftp share folder to a local drive using C# ?

您好,

如何在C#中从FTP文件夹创建本地机器中的虚拟驱动器? 任何代码段......

任何人都可以告诉我如何使用c#.net在我的系统中创建一些虚拟驱动器。 我的目标是从我的ftp主机获取文件和内容,并在一些虚拟驱动器下显示在本地系统中。这样用户就可以作为正常的系统内容访问内容。有谁能告诉我如何实现这个目标?

3 个答案:

答案 0 :(得分:2)

从共享文件夹创建虚拟驱动器的命令是

net use \\some\share <drive> /u:<username to access the folder> <password for the user>

e.g。

net use \\some\share j: /u:domain\user password

在c#中你可以通过Process class

来完成
Process proc = new Process();
            proc.StartInfo.FileName = "net";
            proc.StartInfo.Arguments = @"use \\some\share j: /u:domain\user password";
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

            proc.Start();

            proc.WaitForExit();
            int exitCode = proc.ExitCode;

答案 1 :(得分:1)

正如ajay_whiz指出的那样,你可以向命令行发出命令并调用“net use”。如果您需要直接从C#执行此操作而不启动单独的进程,则必须进行P / Invoke。这不是直截了当的,但它是可行的 - 这是BlackWasp的一个很好的blog post解释如何。

正如博客文章所解释的那样,您可以定义此外部函数:

[DllImport("mpr.dll")]
static extern UInt32 WNetAddConnection3(IntPtr hWndOwner, ref NETRESOURCE
lpNetResource, string lpPassword, string lpUserName, uint dwFlags);

这个结构:

[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCE
{
    public uint dwScope;
    public uint dwType;
    public uint dwDisplayType;
    public uint dwUsage;
    public string lpLocalName;
    public string lpRemoteName;
    public string lpComment;
    public string lpProvider;
}

和这个常数:

const uint RESOURCETYPE_DISK = 1;

然后像这样调用API:

var networkResource = new NETRESOURCE() {
  dwType = RESOURCETYPE_DISK, 
  pLocalName = "Z:", 
  lpRemoteName = @"\\server\share", 
  lpProvider = null 
};

uint result = WNetAddConnection3(this.Handle, ref networkResource, null, null, 0);

if ( result != 0 )
    throw new Exception("drive mapping failed with error code " + result);

以下是WNetAddConnection3的MSDN documentation

答案 2 :(得分:0)

以下链接可以提供帮助。

Link 1

MSDN Social

技巧是您需要在系统中存在的LMHOSTS文件中添加FTP的IP,然后您可以按我在第一个答案中解释的方式使用它