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 :
La méthode addPrinterPort() doit normalement créer un nouveau port pour une imprimante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 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)
Voilà le code :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 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; }
Merci d'avance à qui pourra me mettre sur une piste pour résoudre ce problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 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); }![]()
Partager