Microsoft 365 Identification de l'ordinateur en Terminal Server

RollyLCXL

XLDnaute Nouveau
Bonjour,

J'ai besoin d'identifier avec un identifiant l'ordinateur sur lequel j'ouvre le fichier Excel. Actuellement j'utilise le code Var_ID = CreateObject("Scripting.FileSystemObject").GetDrive("C:\").SerialNumber.

Cela est facile et fonctionne parfaitement ... si ... on est en local ou en réseau. Mais ... si ... on est en Terminal Serveur ... tous les ordis ont le même identifiant pour le SerialNumber.

Je crois comprendre que la technologie Terminal Serveur reproduit sur chacun des postes le C:\ ou un emplacement commun. Lorsqu'on est en Terminal Serveur on peut passer au Local. Lorsque en local c'est parfait. Mais pas en Terminal. J'ai le besoin d'identifier chaque ordi lorsque en Terminal.

Alors si on est en Terminal y aurait-il un code pour distinguer chacun des ordis? Un Processor number ou autre?

Merci à l'avance.
 

patricktoulon

XLDnaute Barbatruc
Bonsoir
je pense que l'on peut envisager cela de différentes manières

à tester notamment le GUID qui normalement est un CLISD unique
la carte mère aussi c'est plus sur comme c'est materiel
VB:
Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Const SM_REMOTESESSION As Long = &H1000

Function IsTerminalServer() As Boolean
    ' Vérifie si la session est une session distante (Terminal Server ou Remote Desktop)
    IsTerminalServer = (GetSystemMetrics(SM_REMOTESESSION) <> 0)
End Function

Sub Test_IsTerminalServer()
    If IsTerminalServer Then
        MsgBox "Le PC est en mode Terminal Server (session distante).", vbInformation
    Else
        MsgBox "Le PC est en session locale.", vbInformation
    End If
End Sub

'****************************************************************************************

'une  fonction toute bête
Function GetComputerName() As String
    GetComputerName = Environ("COMPUTERNAME")
End Function

Sub Test_GetComputerName()
MsgBox GetComputerName
End Sub

'****************************************************************************************
'récupérer l'addresse Mac
Function GetMACAddress() As String
    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim macAddress As String

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    For Each objItem In colItems
        If Not IsNull(objItem.macAddress) Then
            macAddress = objItem.macAddress
            Exit For
        End If
    Next objItem

    GetMACAddress = macAddress
End Function

Sub testaddMac()
MsgBox GetMACAddress
End Sub

'****************************************************************************************
'recuperer le GUID du pc {Globally Unique Identifier]
Function GetPCGUID() As String
    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim guid As String

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystemProduct")

    For Each objItem In colItems
        guid = objItem.UUID
        Exit For
    Next objItem

    GetPCGUID = guid
End Function

Sub Test_GetPCGUID()
MsgBox GetPCGUID
End Sub

'****************************************************************************************
'identifiant de la carte mère
Function GetMotherboardID() As String
    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim motherboardID As String

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")

    For Each objItem In colItems
        motherboardID = objItem.SerialNumber
        Exit For
    Next objItem

    GetMotherboardID = motherboardID
End Function
Sub Test_GetMotherboardID()
MsgBox GetMotherboardID

End Sub
'****************************************************************************************

patrick
 

RollyLCXL

XLDnaute Nouveau
Bonjour,

J'ai besoin d'identifier avec un identifiant l'ordinateur sur lequel j'ouvre le fichier Excel. Actuellement j'utilise le code Var_ID = CreateObject("Scripting.FileSystemObject").GetDrive("C:\").SerialNumber.

Cela est facile et fonctionne parfaitement ... si ... on est en local ou en réseau. Mais ... si ... on est en Terminal Serveur ... tous les ordis ont le même identifiant pour le SerialNumber.

Je crois comprendre que la technologie Terminal Serveur reproduit sur chacun des postes le C:\ ou un emplacement commun. Lorsqu'on est en Terminal Serveur on peut passer au Local. Lorsque en local c'est parfait. Mais pas en Terminal. J'ai le besoin d'identifier chaque ordi lorsque en Terminal.

Alors si on est en Terminal y aurait-il un code pour distinguer chacun des ordis? Un Processor number ou autre?

Merci à l'avance.
 

RollyLCXL

XLDnaute Nouveau
Désolé de revenir que maintenant.

Les tests que j'ai pu effectuer chez un client est que tout ceci retourne les mêmes infos lorsqu'en Terminal Serveur ... d'un poste à l'autre.

Jusqu'ici la seule commande qui résulte en une infos distincte est MsgBox Environ("Username"). (session)

Mais je me demande s'il pourrait y avoir le risque que plus d'un ordi aurait le même "Username".
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 120
Membres
112 666
dernier inscrit
Coco0505