Bonjour,
Je cherche à savoir comment renommer un pc en c#. J'ai entendu parler de l'API SetComputerNameEx mais ça reste flou !
Si quelqu'un pouvait m'aider ? :?
Version imprimable
Bonjour,
Je cherche à savoir comment renommer un pc en c#. J'ai entendu parler de l'API SetComputerNameEx mais ça reste flou !
Si quelqu'un pouvait m'aider ? :?
Bonjour
Il faut faire:
Pour pouvoir utilier la fonction SetComputerNameEx dans le codeCode:
1
2
3
4 [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] static extern bool SetComputerNameEx(COMPUTER_NAME_FORMAT NameType, string lpBuffer);
Je débute en c# : est ce qu'un code avec une fonction main et un namespace system serait suffisant ? (msdn = :koi:)
Merci d'avance
Cette fonction doit etre placee dans une classe, suffit d'instancier la classe pour pouvoir utiliser la fonction qu'elle contient
En fait samarchpa çà doit marcher :aie: comme te l'explique mon collègue Piotrek. Disons que pour l'utilisation des API, le mot-clé dans tes recherches documentaires sur notre site, sera PInvoke. Une fois familiarisé avec ce type d'implémentation tu as une ressource très précieuse aussi qui est http://www.pinvoke.net/ ;)Citation:
Envoyé par samarchpa
;) Merci à tous !!
Finalement, j'ai réussi à générer un exe... qui ne fait rien !!
En fait, je n'ai pas trouvé comment appliquer la fonction, j'ai essayé divers trucs sans succès :
Si quelqu'un peut m'aider :mrgreen: :
Code:
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
37
38
39
40
41
42
43
44
45
46 using System; using System.Runtime.InteropServices; enum COMPUTER_NAME_FORMAT { ComputerNameNetBIOS, ComputerNameDnsHostname, ComputerNameDnsDomain, ComputerNameDnsFullyQualified, ComputerNamePhysicalNetBIOS, ComputerNamePhysicalDnsHostname, ComputerNamePhysicalDnsDomain, ComputerNamePhysicalDnsFullyQualified, ComputerNameMax } namespace PcN { class WindowsAPI { [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] public static extern bool SetComputerNameEx(COMPUTER_NAME_FORMAT ComputerNetbiosName, string Newname); } } namespace PcN2 { class WindowsAPI2 { static void Main() { try { /*SetComputerNameEx() WindowsAPI() windowsAPI winAPI = New windowsAPI()??? HELP ! */ } catch { } } } }
A+Code:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50 using System; using System.Runtime.InteropServices; enum COMPUTER_NAME_FORMAT { ComputerNameNetBIOS, ComputerNameDnsHostname, ComputerNameDnsDomain, ComputerNameDnsFullyQualified, ComputerNamePhysicalNetBIOS, ComputerNamePhysicalDnsHostname, ComputerNamePhysicalDnsDomain, ComputerNamePhysicalDnsFullyQualified, ComputerNameMax } namespace PcN { class WindowsAPI { [DllImport("kernel32.dll", SetLastError=true, CharSet=CharSet.Auto)] public static extern bool SetComputerNameEx(COMPUTER_NAME_FORMAT ComputerNetbiosName, string Newname); } static void Main() { try { bool result = SetComputerNameEx(COMPUTER_NAME_FORMAT. ComputerNameNetBIOS, "NomPC"); if (result) { Console.Write("Renommage effectué avec succès"); } else { Console.Write("Problème"); } } catch { } } }
:merci: !!!
Pour ceux que ça intéresse :
1. Pour que ça fonctionne j'ai dû utilisé "setcomputername" au lieu de "setcomputernameex" car je suis en workgroup.
2. Mais une fois lancé, il s'est passé un truc incohérent après plusieurs reboot la commande echo %computername%" afffichait bien le nouveau nom et l'onglet système l'ancien !! Alors j'ai défini plusieurs variables ainsi :
Il ya sans doute une meilleure façon de faire ?!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 [...] static void Main() { try { bool result = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalNetBIOS, "NouveauNom"); bool result2 = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameNetBIOS, "NouveauNom"); bool result3 = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsHostname, "NouveauNom"); bool result5 = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNameDnsFullyQualified, "NouveauNom"); bool result6 = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsHostname, "NouveauNom"); bool result7 = SetComputerNameEx(COMPUTER_NAME_FORMAT.ComputerNamePhysicalDnsFullyQualified, "NouveauNom"); [...]
3. Plus qq détails pour que csc ne bronche plus !