Probleme SetPropertyValue() (conversion)

Signaler
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010
-
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010
-
Bonjour,

Je code un petit tool qui permet d'afficher l'adresse MAC (et d'autres infos) de ma carte wifi, et donne la possibilité de la changer.
J'utilise :




ManagementObject.GetPropertyValue("MacAddress").ToString();




pour récupérer mon adresse MAC.

Pour la modifier je pense utiliser :

ManagementObject.SetPropertyValue("MacAddress", maNouvelleMac) ;

qui s'utilise, d'apres la MSDN :
publicvoid SetPropertyValue (
string propertyName,
Object propertyValue
)

Mon problème est que je ne vois pas comment transformer une chaine de type "11:22:33:44:55:66" entré par l'utilisateur, en un object comme demandé ?

Merci pour l'aide.

9 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

Après avoir jeté un petit coup d'oeil sur ce forum, on voit que ça doit être un tableau de byte.
Et si on lit un peu plus loin, tu verras aussi qu'il y a peu de chance que ta carte réseau te permette de le faire.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010

Merci pour ta réponse.
J'avais justement vu ce forum, mais comme la réponse n'est pas bonne, je voulais "relancer" le sujet.
Je ne vois pas pourquoi on pourrait changer manuellement l'adresse MAC soit en passant par la base de registre, soit par les propriétés de la carte réseaux, soit meme par des programmes qui font cela, et que là en C# on soit bloqué.. ?
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

La MAC address n'est pas simplement une clé de registre, c'est une valeur de la carte physique.
Il y a certains moyens de la modifier, ou de faire croire qu'elle a été modifiée, mais ce n'est pas simple, et WMI ne peut le faire que si la carte le permet.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010

ok. Sous linux on a besoin d'une petite ligne de commande mais là c'est plus compliqué.. :/

Partons du principe que ma carte le permet, comment puis-je convertir mon adresse en un tableau de byte, puis en un object ?
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010

J'ai essayé avec GetBytes() :




newMAC = txtbxMacAddress.Text;
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
           
o.SetPropertyValue("MacAddress", encoding.GetBytes(newMAC));
o.Put();




Exception : "La référence d'objet n'est pas définie à une instance d'un objet."
Le tableau de byte n'est donc pas la bonne solution..
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Hello,

Non, il faut faire la conversion différemment :

string input = "11:22:33:44:55:66";
byte[] mac = new byte[6];

string[] splittedInput = input.Split(new char[]{':'});

for (int i =0;i<mac.Length;i++)
     mac[i]= int.Parse(splittedInput[i]);

J'ai pas testé, mais ça devair être ok.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
62
Re-Hello,

Si le but est de développer ton propre programme de changem,ent d'adresse mac, essaie comme ça.

Par contre, si tu veux juste la changer, quel que soit le moyen, essaie avec macshift.
Je ne l'ai pas essayé personnellement, mais ça à l'air pas mal.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010

Merci SharpMao.
Oui je voudrais créer mon propre mac changer.
Dans ton code il faut juste rajouter le cast :
    mac[i]= (byte)int.Parse(splittedInput[i]);
sinon il compile pas.

Mais au final :/ j'ai toujours la NullReferenceException sur le SetPropertyValue() "La référence d'objet n'est pas définie à une instance d'un objet."
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
13 juillet 2010

up :/