Duplicaté possible: strong>
Accéder à des lecteurs de réseau protégés par mot de passe dans Windows en C #? p>J'ai Computera sur DomainA en cours d'exécution comme Usera nécessitant copier un fichier très volumineux sur ComputerB sur WorkgroupB, qui possède l'IP de 192.168.10.2 dans une action Windows que seule Userb a un accès écrit. P>
là N'EST AUCUN NETBIOS OU DNS RESOLVÉ DE NETBIOS DE NETBIO DONS L'ordinateur doit être réfrigé par IP P>
I, j'ai d'abord essayé p>
xxx pré> mais je reçois un
System.security .SecurityException code> "Le nom fourni n'est pas un nom de compte correctement formé." P>
donc j'ai essayé p>
xxx pré> mais je reçois "l'échec de la connexion : Nom d'utilisateur inconnu ou mauvais mot de passe. " Erreur à la place. p>
alors j'ai essayé p>
xxx pré> mais
logonuser code> renvoie false avec l'erreur Win32 "Échec de la connexion: utilisateur inconnu Nom ou mauvais mot de passe " P>
Je sais que mon nom d'utilisateur et mon mot de passe sont corrects, je me suis connecté à ComputerB comme utilisateur. p>
Tous les recommandations P> BlockQuote>
3 Réponses :
Hors de ma tête, avez-vous essayé au lieu de p> ? p> p> P>
Échec de la connexion: nom d'utilisateur inconnu ou mauvais mot de passe.
maïenne ma réponse ici A > Appliquer sur ce que vous essayez? (copie de la réponse liée) p> Cette question m'a eu lieu là où je devais être assez vite dans
le même cas. p>
Voici comment j'ai adapté le code: p>
IntPtr token;
if (!NativeMethods.LogonUser(
this.userName,
this.domain,
this.password,
NativeMethods.LogonType.NewCredentials,
NativeMethods.LogonProvider.Default,
out token))
{
throw new Win32Exception();
}
try
{
IntPtr tokenDuplicate;
if (!NativeMethods.DuplicateToken(
token,
NativeMethods.SecurityImpersonationLevel.Impersonation,
out tokenDuplicate))
{
throw new Win32Exception();
}
try
{
using (WindowsImpersonationContext impersonationContext =
new WindowsIdentity(tokenDuplicate).Impersonate())
{
// Do stuff with your share here.
impersonationContext.Undo();
return;
}
}
finally
{
if (tokenDuplicate != IntPtr.Zero)
{
if (!NativeMethods.CloseHandle(tokenDuplicate))
{
// Uncomment if you need to know this case.
////throw new Win32Exception();
}
}
}
}
finally
{
if (token != IntPtr.Zero)
{
if (!NativeMethods.CloseHandle(token))
{
// Uncomment if you need to know this case.
////throw new Win32Exception();
}
}
}
Il semblerait que mon 3ème chemin (très proche de ce que vous avez fait) est la bonne façon. Utiliser votre code, cela a fonctionné bien.
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement des liaisons peuvent devenir invalides si la page liée change.
Tu es mon héros! J'ai travaillé sur ce problème pendant une telle période et avec des approches différentes. Aucun n'a travaillé avec la propriété intellectuelle. SUPER! Merci.
if ( LogonUser(userName, domain, password, **LOGON32_LOGON_TYPE, LOGON32_PROVIDER_DEFAULT,** ref token ) != 0 ) {