2015-12-02 3 views
1

Voici mon code:Essayer de copier un fichier de mon ordinateur à un autre ordinateur sur le même réseau

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     File.Copy(@"C:\Documents and Settings\subhayan\Desktop\QBpluginlink.txt", @"\\10.10.10.148\C:\QBpluginlink.txt", true); 
    } 
    catch (Exception ex) 
    { 
    } 
} 

lorsque ce code est exécuté, je reçois l'exception

Le format du chemin donné est non pris en charge

Quelqu'un peut-il me dire où je me suis peut-être trompé?

Répondre

5

Le problème est le C: dans le chemin d'accès UNC dans lequel vous souhaitez copier le fichier. Soit vous changer que ce soit une action valide sur l'ordinateur cible ou si vous utilisez un partage administratif (si ceux-ci sont activés et le compte dispose de droits suffisants pour le faire):

@"\\10.10.10.48\ValidShareName\QBpluginlink.txt", // Valid share name 

@"\\10.10.10.48\C$\QBpluginlink.txt", // Administrative share 
+1

Vous me devança +1 – CSL

+0

@Markus Existe-t-il un moyen de fournir un nom d'utilisateur et un mot de passe avec le chemin? – Mainak

+0

Vous pouvez également exécuter le code sous un compte spécifique si vous empruntez l'identité de ce compte. Mais dans ce cas, vous êtes responsable de stocker les informations d'identification de manière sécurisée. C'est beaucoup plus facile si vous pouvez le faire fonctionner dans Windows Explorer par exemple. en donnant des autorisations d'accès au compte de l'application ou en spécifiant les informations d'identification et en les enregistrant dans le magasin de mots de passe Windows. Si l'accès de base est en place, votre application n'a rien à faire de spécial. – Markus

2

Ce chemin ne fonctionnerait pas même si vous l'avez essayé dans Windows Explorer. Si vous avez la permission essayer un partage de fichiers bon chemin UNC:

\\10.10.10.148\c$\QBpluginlink.txt

Notez le c$, il est une configuration de partage d'administration par défaut par Windows pour accéder au C: disque - mais vous aurez besoin des autorisations appropriées. Vous pouvez également créer un partage spécifique selon la réponse de Markus.

0

La destination doit être un chemin de fichier valide, dans votre cas, un chemin UNC valide. "\ 10.10.10.48 \ C: \ QBpluginlink.txt" n'est pas valide car vous référencez le lecteur c: de ce même ordinateur. Vous devez créer un dossier partagé sur votre serveur de destination et utiliser ce chemin.

Vous pouvez également utiliser le partage de lecteur par défaut: par ex. \ 10.10.10.48 \ C $ \ QBpluginlink.txt

1

De MSDN:

string fileName = @"QBpluginlink.txt"; 
    string sourcePath = @"C:\Documents and Settings\subhayan\Desktop"; 
    string targetPath = @"\\10.10.10.148\C$"; 

    // Use Path class to manipulate file and directory paths. 
    string sourceFile = System.IO.Path.Combine(sourcePath, fileName); 
    string destFile = System.IO.Path.Combine(targetPath, fileName); 

    // To copy a folder's contents to a new location: 
    // Create a new target folder, if necessary. 
    if (!System.IO.Directory.Exists(targetPath)) 
    { 
     System.IO.Directory.CreateDirectory(targetPath); 
    } 

    // To copy a file to another location and 
    // overwrite the destination file if it already exists. 
    System.IO.File.Copy(sourceFile, destFile, true); 

S'il vous plaît assurez-vous que vous avez un accès à copier un fichier sur le serveur va