Changer le COMPUTERNAME sous XP

nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 - 12 juin 2004 à 16:20
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 14 juin 2004 à 15:46
Ben voila, je crois que tout est dit dans le titre.

J'ai trouvé 2-3 truc sur le net, mais apparement, c pour du 98 par exemple l'URL suivante : http://www.juicystudio.com/tutorial/vb/compname.asp

Hors j'en ai besoin pur de l'XP ...

Merci de votre aide ...

7 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
12 juin 2004 à 16:49
Pour XP, je crois que ça devrait marcher, sinon faudrait voir du côté de GetComputerNameEx et SetComputerNameEx. Mais g pas testé.

Cordialement

CanisLupus
0
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 1
13 juin 2004 à 02:04
Ben en fait, je reprends le meme code et le remplace par SetComputerNameEx, et malgré tout, ca veut pas !!

Du moins, c'est assez etrange puisque, lorsqu'on utilise le GetComputerNameEx, il me donne bien le nom par lequel je l'ai modifié.

Mais dans les propriétés du "poste de travail", ben le nom n'a pas changé, meme apres reboot !

Ou va-t'il chercher ce nom alors ?

Merci encore pour votre aide !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
13 juin 2004 à 13:28
On peut pas remplacer une API par une autre sans changer le code. Car il existe des différences.
Ce que tu dis, ça ressemble au prob que g eu avec gethostname : cette api me récupérait le nom de la station mais ds certains cas, ça ne correspondait pas tout à fait au nom déclaré dans la description du PC car elle renvoie le DNS.

Je ne peux pas tester avant lundi, car pas d'XP chez moi, mais g trouvé le bout de code suivant :

Pour savoir ce que recouvre Enum COMPUTER_NAME_FORMAT, il faut aller voir :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/computer_name_format_str.asp

Private Enum COMPUTER_NAME_FORMAT
ComputerNameNetBIOS
ComputerNameDnsHostname
ComputerNameDnsDomain
ComputerNameDnsFullyQualified
ComputerNamePhysicalNetBIOS
ComputerNamePhysicalDnsHostname
ComputerNamePhysicalDnsDomain
ComputerNamePhysicalDnsFullyQualified
ComputerNameMax
End Enum

Private Declare Function GetComputerNameEx _
Lib "kernel32.dll" Alias "GetComputerNameExA" _
( _
ByVal NameType As Struct_MembersOf_COMPUTER_NAME_FORMAT, _
ByVal lpBuffer As String, _
ByRef nSize As Long _
) As Long

Private Declare Function SetComputerNameEx _
Lib "kernel32.dll" Alias "SetComputerNameExA" _
( _
ByVal NameType As Struct_MembersOf_COMPUTER_NAME_FORMAT, _
ByVal lpBuffer As String _
) As Long

Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@allapi.net
ShowName ComputerNameNetBIOS, "NetBIOS name"
ShowName ComputerNameDnsHostname, "DNS host name"
ShowName ComputerNameDnsDomain, "DNS Domain"
ShowName ComputerNameDnsFullyQualified, "Fully qualified DNS name"
ShowName ComputerNamePhysicalNetBIOS, "Physical NetBIOS name"
End Sub

Private Sub ShowName(lIndex As COMPUTER_NAME_FORMAT, Description As String)
Dim Ret As Long, sBuffer As String
'create a buffer
sBuffer = Space(256)
Ret = Len(sBuffer)
'retrieve the computer name
If GetComputerNameEx(lIndex, sBuffer, Ret) <> 0 And Ret > 0 Then
'show it
MsgBox Description + ": " + Left$(sBuffer, Ret)
End If
End Sub

Sub SetName()
Dim strNewName As String
Dim retval As Long
'Ask for a new computer name
strNewName = InputBox("Please enter a new computer name.")
'Set the new computer name
retval = SetComputerName(ComputerNameNetBIOS, strNewName)
'ou
'retval = SetComputerName(ComputerNameDnsHostname, strNewName)
If retval <> 0 Then
MsgBox "Computer name set to, " & strNewName, vbInformation, "Changed Name"
Else
MsgBox "Unable to change the computer name", vbExclamation, "Error"
End If

End Sub

A tester...... dis moi si c bon.

@+

Cordialement

CanisLupus
0
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 1
13 juin 2004 à 23:34
Je ne suis pas des plus calé en VB par contre, en copiant-collant ton code, il me met une erreur au niveau des declarations :
GetComputerNameEx et SetComputerNameEx.

Pour etre franc, j'attendrai bien que tu regardes ce que cela donne chez toi .. :)

Bien sur je continue à chercher aussi de mon coté pour faire ça.

Merci encore ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
14 juin 2004 à 11:56
Salut,
G testé et me suis rendu compte que le copié/coller est faux :
à la place de Struct_MembersOf_COMPUTER_NAME_FORMAT il faut mettre COMPUTER_NAME_FORMAT.

Par contre, je n'arrive pas à changer le nom, pb de droits ou parce que machine en réseau, je ne sais pas encore.

@+

Cordialement

CanisLupus
0
nagstef Messages postés 93 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 30 septembre 2008 1
14 juin 2004 à 13:09
Ben je comprends pas, pour moi, c pareil, ca veux pas ...

apres
retval = SetComputerNameEx(ComputerNameNetBIOS, strNewName)
j'ai une valeur retval 0, malgré ma strNewName "Stef"

Comprend po :(

Je reste à l'affut si vous trouvez quelque chose et je continue de mon coté bien sur !

Stef
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
14 juin 2004 à 15:46
Bon, il y a un autre moyen, écrire directement dans la registry. Je te donne le code mais fais attention si tu es en réseau avec des relations d'approbation ou autres. Ta machine risue de ne plus être reconnue. G testé, ça marche sauf que dans ma boite, la machine ne redémarre plus car elle est connue par ce nom d'un serveur de sécurité.
Donc f8 au démarrage et démarrer avec dernière config correcte connue pour rétablir.

Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ As Long = 1
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Private Sub Command1_Click()
Inscription_Base_Registre
End Sub

Sub Inscription_Base_Registre()
Dim strPath As String
Dim strValue As String
Dim NewName As String

NewName = InputBox("Entrez le nouveau nom de la machine.")

strPath = "System\CurrentControlSet\Control\Computername\ComputerName"
strValue = "ComputerName"
SaveString HKEY_LOCAL_MACHINE, strPath, strValue, NewName

'strPath = "System\CurrentControlSet\Control\Computername\ActiveComputerName"
strValue = "ComputerName"
SaveString HKEY_LOCAL_MACHINE, strPath, strValue, NewName

End Sub

Public Sub SaveString(hKey As Long, strPath As String, strValue As String, strdata As String)
Dim Keyhand As Long, r As Long

r = RegCreateKey(hKey, strPath, Keyhand)
r = RegSetValueEx(Keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
r = RegCloseKey(Keyhand)

End Sub

Cordialement

CanisLupus
0
Rejoignez-nous