[C#.NET ASP et WMI] Accès refusé pour la méthode ManagementObject.Put()

damjuve - 13 déc. 2012 à 11:30
madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 - 21 déc. 2012 à 15:56
Bonjours à tous.

Pour faire court, je code actuellement une application en C# (j'utilise les technologie ASP et WMI), et j'utilise le code d'un collègue. Ce code est fonctionnel (pas de problème dans une autre application), mais visiblement la façon dont je l'ai implémenté pose problème puisque j’obtiens l'exception suivante :

System.Management.ManagementException: Accès refusé
à System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
à System.Management.ManagementObject.Put(PutOptions options)
à MonProjet.Classes.Drivers.addPrinterPort(String ip, ManagementScope oMS)


La méthode addPrinterPort() doit normalement créer un nouveau port pour une imprimante.
Voilà le code :
public bool addPrinterPort(string ip, ManagementScope oMS)
        {
 
            ManagementPath managementPath;
            ManagementObject port;
            PutOptions putOptions;
 
            try
            {
                oMS.Connect();
                managementPath = new ManagementPath("Win32_TCPIPPrinterPort");
                port = new ManagementClass(oMS, managementPath, null).CreateInstance();
 
                port.SetPropertyValue("Name", "IP_" + ip);
                port.SetPropertyValue("Protocol", 1);
                port.SetPropertyValue("HostAddress", ip);
                port.SetPropertyValue("PortNumber", 9100);
                port.SetPropertyValue("SNMPEnabled", true);
 
                putOptions = new PutOptions();
                putOptions.UseAmendedQualifiers = true;
                putOptions.Type = PutType.UpdateOrCreate;
                port.Put(putOptions);
            }
            catch (ManagementException mEx)
            {
                Domaines.debug += "[MANAGEMENT EXCEPTION]" + mEx.GetBaseException() + Environment.NewLine;
                return (true);
            }
            catch (Exception ex)
            {
                Domaines.logException(ex, true);
                return true;
            }
            return false;
        }


Je cherche depuis quelques jours l'origine du problème, et je pense qu'il s'agit d'un problème de connexion. Seulement là encore j'ai repris les paramètre de connexion du code de mon collègue, je vous montre à tout hasard la création de l'objet oMS qui est ensuite passé à la méthode :

public bool connexion()
        {
            try
            {
                /* configuration de la connexion */
                this.oConnectOptions = new ConnectionOptions();
                this.oConnectOptions.Username = this.ip + "\" + this.login;
                this.oConnectOptions.Password = this.password;
                this.oConnectOptions.Impersonation = ImpersonationLevel.Impersonate;
                this.oConnectOptions.EnablePrivileges = true;
                /* Création de la connexion */
                this.oMS = new ManagementScope(this.path, this.oConnectOptions);
                this.oMS.Connect();
            }
            catch (Exception ex)
            {
                logException(ex, true);
                return (true);
            }
            return (false);
        }


Merci d'avance à qui pourra me mettre sur une piste pour résoudre ce problème

1 réponse

madkeyboard Messages postés 100 Date d'inscription mercredi 27 avril 2011 Statut Membre Dernière intervention 21 décembre 2012 1
21 déc. 2012 à 15:56
Euuuu... petit doublon ?
0
Rejoignez-nous