可能重复:
How to map an ftp share folder to a local drive using C# ?
您好,
如何在C#中从FTP文件夹创建本地机器中的虚拟驱动器? 任何代码段......
任何人都可以告诉我如何使用c#.net在我的系统中创建一些虚拟驱动器。 我的目标是从我的ftp主机获取文件和内容,并在一些虚拟驱动器下显示在本地系统中。这样用户就可以作为正常的系统内容访问内容。有谁能告诉我如何实现这个目标?
答案 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)