2009-09-09 13 views
0

J'écris un programme qui, entre autres choses, doit copier un fichier particulier dans un dossier réseau. Comme je suis sur un réseau d'entreprise, les informations d'identification requises pour accéder à ce dossier sont les mêmes que celles de Windows.C# Copier un fichier dans un dossier avec des permissions

Le programme fonctionne si j'ouvre le dossier dans l'Explorateur, fournissez mon nom d'utilisateur et mot de passe, puis exécutez l'uploader. Cela ne fonctionne pas sans d'abord fournir ce nom d'utilisateur et mot de passe. Comment puis-je dire à System.IO de fournir mes DefaultNetworkCredentials à la méthode Copy? Ou y a-t-il une autre méthode que je peux utiliser pour y arriver?

string pathToFile = "myfile.csv"; 
string pathToRemoteFile = "\\server.domain.tld\Documents\Subfolder\myfile.csv" 

System.IO.File.Copy(pathToFile, pathToRemoteFile); // Fails with IOException "can't find network path" 

Merci!

~ Wogan

+0

Je crois qu'il existe un moyen plus universel: http://stackoverflow.com/questions/295538/how-to-provide-user-name-and-password-when-connecting -to-a-network-share/39540451 # 39540451 –

Répondre

2

L'erreur suggère qu'il est un mauvais chemin plutôt qu'un problème d'autorisations.

Essayez ceci:

string pathToRemoteFile = @"\\server.domain.tld\Documents\Subfolder\myfile.csv" 

[Le @ est la chaîne littérale symbole citant; sans cela, la barre oblique inverse est un caractère spécial]

+0

vous pouvez également échapper tous les caractères '\' avec '\\'. Mais la solution de Mitch'es est la meilleure. – Koekiebox

+0

Malheureusement, ce n'est pas ça - Comme je l'ai dit dans ma question initiale, le code fonctionne très bien si je navigue et me connecte au chemin du dossier dans l'explorateur avant d'exécuter le programme. – Wogan

+0

Oups, et cet échantillon de pseudocode n'a pas été copié à partir du programme, il était juste à des fins de démonstration. – Wogan

Questions connexes