Comment utiliser l'authentification Windows (utilisateur administrateur de la machine locale) dans l'application Windows écrite en C #. p>
besoin est chaque fois que l'utilisateur ouvre mon interface graphique de l'application Windows, il doit authentifier les informations d'identification de l'administrateur local même si l'utilisateur est connecté en tant qu'administrateur. P>
est cette impersonnation de Windows? P>
3 Réponses :
Une solution est si vos utilisateurs s'exécutent en tant que compte standard, si vous définissez votre fichier manifeste pour être exécuté en tant qu'administrateur, il invitera toujours un nom d'utilisateur et un mot de passe administrateur toujours.
Ce que vous recherchez probablement est le Logonuser Win32 API Pour valider les informations autorisées: P>
[DllImport("advapi32.dll", SetLastError=true)]
public static extern bool LogonUser(
string lpszUsername,
string lpszDomain,
string lpszPassword,
int dwLogonType,
int dwLogonProvider,
out IntPtr phToken
);
Comment pourrais-je le rendre spécifique aux utilisateurs de l'administrateur? Authentifiez simplement un utilisateur d'administrateur local valide (non domestique ou d'autre utilisateur local).
Vous pouvez appeler la méthode code> logonuser code> API pour vérifier un nom d'utilisateur et un mot de passe. Si vous souhaitez afficher une invite de nom d'utilisateur / mot de passe standard, vous pouvez appeler le creduiPrompetForCredentials fonction API; Voir aussi ici p>
Pour vérifier si l'utilisateur est un administrateur, vous pouvez appeler Alternativement, vous pouvez appeler Vous pouvez également utiliser WMI ou DirectServices. P>
Vous pouvez voir le [dllimport] code> ici . < / p>
Edit h1>
checkTokenMembership code> et vérifiez si l'utilisateur se trouve dans le groupe code> GROUPE CODE>. P>
netunesergetinfo < / Code> niveau 1 et vérifiez si usri1_priv code> est user_priv_admin code>. p>.
Comment pourrais-je le rendre spécifique aux utilisateurs de l'administrateur? Authentifiez simplement un utilisateur d'administrateur local valide (non domestique ou d'autre utilisateur local).
Vous devez vérifier si le nom d'utilisateur est dans le groupe Administrateurs local. msdn.microsoft.com/en-us/library/ AA376389% 28VS.85% 29.aspx
Pour vérifier si l'utilisateur est administrateur: j'utilise le jeton d'utilisateur (une variable de la méthode de la connexion de la Logonuser). Voici le code: - Identité de WindInsidity = nouveau windowidentitity (hotes); Windowsprincipal Principal = Nouveau Windowsprincipal (identité); Renvoyer le principal.Isincrètement (WindowsBuiltInrole.Administrator);
Peut être un peu en retard mais pour atteindre Authentification de la fenêtre Fonctionnalité forte> à une application de bureau C #, il existe deux étapes avec des étapes ci-dessous.
Étape 1: strong> Obtenez actuellement connecté Détails de l'utilisateur: P> C'est assez simple. Nous pouvons y parvenir en utilisant la classe Windowsity de Étape 2: strong> Valider les informations d'identification Windows fournies par l'utilisateur: P> besoin de demander Nom de domaine, nom d'utilisateur, mot de passe de l'utilisateur pour transmettre ces valeurs au service Interop.
Ceci est peu complexe comparé ci-dessus, car nous devons appeler une API Windows à l'aide de Intresservices. Pour accomplir cela, nous devons ajouter une déclaration de fonction externe, puis appeler la fonction. Le code suivant vous aidera à mieux comprendre cela mieux. P> System.Security.Principal code> Espace de noms. Cette classe fournit une méthode statique, getCurrent () code>, qui renvoie un objet de windowsity.
Ci-dessous est le code que vous pouvez utiliser pour obtenir le courant connecté des détails de l'utilisateur. P> bool issuccess = false;
string username = GetloggedinUserName();
if (username.ToLowerInvariant().Contains(txtUserName.Text.Trim().ToLowerInvariant()) && username.ToLowerInvariant().Contains(txtDomain.Text.Trim().ToLowerInvariant()))
{
issuccess = IsValidateCredentials(txtUserName.Text.Trim(), txtPwd.Text.Trim(), txtDomain.Text.Trim());
}
if (issuccess)
MessageBox.Show("Successfuly Login !!!");
else
MessageBox.Show("User Name / Password / Domain is invalid !!!");