Netapi32.dll + access denied [Résolu]

cs_jimmy69 787 Messages postés dimanche 22 décembre 2002Date d'inscription 27 novembre 2008 Dernière intervention - 21 nov. 2007 à 08:51 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 1 déc. 2007 à 17:32
Bonjour,

J'ai un project écrit en c# 1.1 qui fait appel a une api windows qui est Netapi32.dll.

J'utilises la fonction NetUserChangePassword de cette dll dans mon code.

Voici l'appel de cette methode :



public string CheckUser(string domain, string username, string password)
{
string valeur;
valeur = "KO";
int ret;

ret = NetUserChangePassword( domain, username, password, password );
if (ret != 0 && ret != 1327 && ret != 2245)
{
valeur = "KO";

MessageBox.Show("Return code: " + ret.ToString());
}
else
{
valeur = "OK";
MessageBox.Show("Return code: " + ret.ToString());

}
return valeur;

Ca fonctionne...sauf que sur une machine, le return code de l'appel de la fonction me renvoit => 5 et donc KO!

D'apres ce que j'ai lu sur internet ce return code correspond a ERROR_ACCESS_DENIED
=> The user does not have access to the requested information.

L'utilisateur n'aurait pas acces aux informations!? Mais comment lui octoroyer ?
Quelqu'un aurait il eu ce probleme et pourrait il me dire ce qu'il a effectue pour corriger cela !?

je vous remercie
Christophe
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 25 nov. 2007 à 01:26
3
Merci
Salut,

Je dirais plutôt que l'utilisateur n'a pas les droits de modifier les informations du compte ciblé.
Quelles sont les différences entre les machines ? Les machines font elles partie d'un domaine ? Quel type d'application utilise ce code ? Depuis où le code est il executé ? Des comptes de domaine sont ils utilisés pour lancer l'application ?
Sinon quel est le but final de la manoeuvre ?

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_coq
cs_jimmy69 787 Messages postés dimanche 22 décembre 2002Date d'inscription 27 novembre 2008 Dernière intervention - 27 nov. 2007 à 08:45
0
Merci
salut salut coq,

Oui exactement c'etait bien cela ! l'utilisateur avait bien l'option user can't change password d'ACTIVIE !!!ce qui nous renvoyaient quand on essayait d'executer le code ..erreur 5 => ACCESS DENIED d'apres la doc MSDN!

Alors pour info, cette dll est placé dans un paquet installable (installshield) et dans la user interface, j'ai un custom dialog avec 3 champs :
domaine, user, password, et quand le user clique sur next j'utilise cette méthode SANS CHANGER SON MOT DE PASSE BIEN SUR afin de verifier si ce user existe ou non ! Si le resultat est ok je passe a l'ecran suivant et j'installe donc le produit ! Il faut absolument que le user existe car un service tourne sous ce user c'est super important !

Ok tu vas me demander pourquoi utilise cette méthode et pas une autre !
Avant on utilisait une methode nommée logonuser avant mais sur certaines machines cela ne tournait pas (win 2000 et vista si mes souvenirs sont bons) !

C'est le seul moyen que j'ai trouve pour verifier si un user local ou du domaine existe ou pas !!!

Si tu as une autre idée, elle est bien sur la bienvenue !

Merci
Christophe
Commenter la réponse de cs_jimmy69
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 1 déc. 2007 à 17:32
0
Merci
Salut,

Utiliser la méthode de changement de mot de passe pour tester la validité des informations d'authentification fournies me semble dangereux.
D'ailleurs tu changes le mot de passe, pour le même, mais tu fais l'action de le changer, ce qui peut avoir un impact sur la gestion de péremption du mot de passe et autres les règles en vigueur sur la gestion des comptes
A mon avis tu ferais mieux de creuser la raison pour laquelle LogonUser/LogonUserEx ne fonctionnait pas, ce qui en plus devrait te permettre de tester le logon dans le contexte final, c'est à dire pour lancer un service.

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.