Copier des fichiers sur le réseau via le partage de fichiers, l'authentification de l'utilisateur

Je fais construire une .net C# console de programme pour déployer le fichier sur un windows serveur de partage de fichiers (dossier partagé). Le chemin d'accès est :: \\192.168.0.76\htdocs\public

Sur l'exécution j'obtiens l'erreur:

[09:35:29]: [Step 1/3] Unhandled Exception: System.UnauthorizedAccessException: Access to the path '\2.168.0.76\htdocs\public' is denied.
[09:35:29]: [Step 1/3]    at DeployFileShare.Program.CopyDir(String source, String dest, String[] exclude, Boolean overwrite)
[09:35:29]: [Step 1/3]    at DeployFileShare.Program.Deploy(String num, String source)
[09:35:29]: [Step 1/3]    at DeployFileShare.Program.Main(String[] args)
[09:35:29]: [Step 1/3] Process exited with code -532459699

Je pense que j'ai besoin d'authentifier moi-même. J'ai trouver ceci:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity(username, password);
WindowsImpersonationContext context = idnt.Impersonate();

J'ai aussi essayé:

AppDomain.CreateDomain("192.168.0.76").SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
WindowsIdentity idnt = new WindowsIdentity("user", "pass");
WindowsImpersonationContext context = idnt.Impersonate();

Je ne suis pas sûr de la façon de l'utiliser. Quand je lance l'application j'obtiens:

C:\Users\Administrator>DeployFileShare 1 R:\BuildOutput\_PublishedWebsites\Web 2
1
Deploy Started Web, version 21
-- Deploy Prepared
-- Deploying to 1

Unhandled Exception: System.Security.SecurityException: There are currently no l
ogon servers available to service the logon request.

   at System.Security.Principal.WindowsIdentity.KerbS4ULogon(String upn)
   at System.Security.Principal.WindowsIdentity..ctor(String sUserPrincipalName,
 String type)
   at DeployFileShare.Program.Authenticate(String server)
   at DeployFileShare.Program.Deploy(String num, String source)
   at DeployFileShare.Program.Main(String[] args)
The Zone of the assembly that failed was:
MyComputer

Voici le code de base:

static void Main()
{
Copy();
}
static void Copy()
{
AppDomain.CreateDomain(GetServerInfo(server, "server")).SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            WindowsIdentity idnt = new WindowsIdentity(GetServerInfo(server, "user"), GetServerInfo(server, "pass"));
            WindowsImpersonationContext context = idnt.Impersonate();
string source = "C:\\someDir";
string dest = "\2.168.0.76\shareFolder"
string[] sourceFiles = Directory.GetFiles(source, "*", SearchOption.AllDirectories);
            foreach (string file in sourceFiles)
            {
                string local = file.Replace(source, "");
                if (exclude.Contains(local))
                    continue;
                if (!Directory.Exists(Path.GetDirectoryName(dest + "\\" + local)))
                    Directory.CreateDirectory(Path.GetDirectoryName(dest + "\\" + local));
                File.Copy(file, dest + "\\" + local, overwrite);
                Console.WriteLine("-- -- [copied] {0} -> {1}", file, dest + "\\" + local);
            }
}

Le code de la copie du système dans la boucle fonctionne, j'ai testé sur mon système local.

Si quelqu'un sait comment je dois utiliser WindowsIdentity et WindowsIdentity pour obtenir que cela fonctionne merci de m'éclairer. J'ai été en regardant autour et de la fenêtre de la documentation ne l'aide pas beaucoup.

En gros comment puis-je copier un répertoire distant partagé par l'exploitation forestière dans le système?

source d'informationauteur Patrick Lorio