nagstef
Messages postés93Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 septembre 2008
-
12 juin 2004 à 16:20
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 2006
-
14 juin 2004 à 15:46
Ben voila, je crois que tout est dit dans le titre.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200619 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 :
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
nagstef
Messages postés93Date d'inscriptionsamedi 11 octobre 2003StatutMembreDernière intervention30 septembre 20081 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 ..
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200619 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.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200619 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.")