2010-08-04 7 views
1

Possible en double:
How to map an ftp share folder to a local drive using C# ?Comment créer un lecteur virtuel dans la machine locale à partir du dossier FTP en C#?

Salut,

comment créer lecteur virtuel dans la machine locale à partir du dossier FTP en C#? Tout extrait de code ...

Quelqu'un peut-il me dire comment créer un lecteur virtuel dans mon système en utilisant C# .net. Mon but est d'obtenir des fichiers et des directoreies de mon hôte ftp et de les afficher dans le système local sous un lecteur virtuel. afin que l'utilisateur puisse accéder au contenu en tant que contenu normal du système. quelqu'un peut me dire s'il vous plaît comment y parvenir?

+0

NON ................... –

+0

Comment "drive-y" doit-il être? Ne pouvez-vous pas le mapper en tant que lecteur réseau? –

+0

@Lasse: Je ne t'ai pas eu? Je veux faire en utilisant C# –

Répondre

2

la commande pour faire un disque virtuel à partir d'un dossier de partage est

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

par exemple,

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

en C#, vous pouvez le faire par classe Process

+0

J'ai édité ma question pouvez-vous jeter un oeil? –

1

Comme ajay_whiz souligne, vous pouvez débourser à la ligne de commande et d'appeler « l'utilisation nette ». Si vous devez le faire directement à partir de C# sans lancer de processus séparé, vous devrez utiliser P/Invoke. Ce n'est pas simple, mais c'est faisable - voici un joli blog post par BlackWasp expliquant comment.

Comme le blog explique, vous pouvez définir cette fonction externe:

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

Cette structure:

[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; 
} 

et cette constante:

const uint RESOURCETYPE_DISK = 1; 

appeler ensuite l'API comme ceci:

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); 

Voici le MSDN documentation pour WNetAddConnection3.

+0

En regardant votre question éditée, ma réponse ici ne va pas faire ce que vous voulez - c'est pour le partage de fichiers Windows seulement. Je ne connais pas un moyen de faire un dossier FTP comme si c'était local. –

0

Les liens suivants peuvent vous aider.

Link 1

MSDN Social

l'astuce est que vous devez ajouter l'adresse IP de votre FTP dans LMHOSTS fichier présent dans votre système et vous pouvez l'utiliser comme la façon dont je l'expliquais dans ma 1ère réponse

Questions connexes