Computername herausfinden
-
hi!
Wie finde ich per Programmierung den Namen des aktuellen PC sowie der im Netzwerk angeschlossenen PCs heraus? Oder ist letzteres nicht möglich?
thx schonmal
-
also die Funktion findet eine IPs raus, den eigenen Computernamen ebenfalls er wird allerdings nicht zurückgegeben(also verstehen und umschreiben :P)
int getmyips(TStrings* pslStrings) { if(pslStrings) pslStrings -> Clear(); WSAData stData; char caHostName[255]; hostent* pstHostEntry = NULL; in_addr stInetAddress; int ilRetVal = 0; // Winsock initialisieren: if(WSAStartup(0x0101, &stData) == 0) { // Hostnamen bestimmen: if(gethostname(caHostName, 255)) return 0; // Hostinformationen abrufen: pstHostEntry = gethostbyname(caHostName); if(pstHostEntry == NULL) return 0; // IP-Adressen bestimmen: for(int ilAddrIndex=0; pstHostEntry->h_addr_list[ilAddrIndex]; ilAddrIndex++) { stInetAddress.S_un.S_addr = *((DWORD*)pstHostEntry->h_addr_list[ilAddrIndex]); if(pslStrings != NULL) pslStrings -> Add(inet_ntoa(stInetAddress)); ilRetVal++; } } else return 0; WSACleanup(); return ilRetVal; }
alternativ kannst du es auch so versuchen(die globale Variable COMPUTERNAME rausfinden) ist zwar kürzer, aber keine Garantie das das in allen aktuellen und zukünftigen Windows Versionen läuft/laufen wird:
char puffer[100]; GetEnvironmentVariable("COMPUTERNAME", &puffer,sizeof(puffer)); ShowMessage(puffer);
Und was das rausfinden der adnren IPs betrifft... ich hab mal nen Beitrag dadrüber gelesen, ich glaub sogar im FAQ
, ansonsten musu mal nach suchen
-
Verschoben nach "WinAPI".
Dort bitte unbedingt die Suchfunktion benutzen!
-
wass'n das für ein umständliches gemehre?! dafür gibts die funktion GetComputerName...
-
Danke, die Tipps waren super, nur wie kriege ich die Ips aller PCs im Netzwerk zurückgeliefert. Ich brauche das für mein Netzwerk, wobei für mich sehr wichtig ist, schnell mit einem klick alle Ips der Netzrechner herauszufinden und damit ich die zuordnen kann, müssen da auch die PC-Namen stehen.
Vielleicht kann mir bitte dahingehend jemand helfen (also Ips und Namen aller Rechner im netzwerk)?
Vielen Dank!
-
Vielleicht hilft dir NetServerEnum
Ansonsten kannst du dich auch mal hier umschauen
-
Danke Flenders für den Link,
mit deinem Link finde ich jedoch nur den Computernamen heraus. Ich denke, dazu muss ich wahrscheinlich die NetGetAnyDCName-Funktion nutzen. Leider bin noch nicht sehr erfahren mit der WinAPI, würde euch daher bitten, mir ein kleines Beispiel zu erstellen, wie ich mit diesen "Network Management Functions", die ja scheinbar sehr weiterhelfen!, alle Ips und Rechnernamen herausfinden kann.
Vielen Dank!
-
Original erstellt von <opel>:
**hi!Wie finde ich per Programmierung den Namen des aktuellen PC sowie der im Netzwerk angeschlossenen PCs heraus? Oder ist letzteres nicht möglich?
thx schonmal**
Hi opel,
also erstmal wären ein paar mehr Angaben zu Deinem "Netz" schon hilfreich,
z.B. ob es eine Workgroup oder ein Netz mit echtem Server ist.
Welches OS wäre auch wichtig zu wissen.
Ich beziehe mich hier auf ein NT4-Netz.Bei einem NT4.0-Netz mit DC´s kommst Du mit NetGetAnyDCName zumindest schon mal an einen Domaincontroller (PDC oder BDC)
Mit GetComputerName() bekommst Du, wie schon beschrieben, den eigenen Rechnernamen.
Da ein Computer in einer Domäne genau wie ein User ebenfalls ein Konto besitzt, kannst Du den DC mit NetQueryDisplayInformation() und dem Filter UF_WORKSTATION_TRUST_ACCOUNT nach allen WKS der Domäne löchern. Dann bekommst Du die Namen aller Maschinen (WKS) in Deiner Domäne zurück.
Die Namen fragst Du einzeln mit gethostbyname() nach deren IP´s ab.
Das dürfte soweit auch in einer W2K-Domäne funktionieren.(Setzt eigentlich noch irgendjemand NT4 ein??)
Willst Du auch noch festellen ob die Rechner gerade im Netz sind, ist vielleicht GetRTTAndHopCount() aus dem PSDK ganz hilfreich.
Handelt es sich bei Deinem Netz um eine Workgroup ohne zentralen Server, wüßte ich im moment nicht, wie man die Angaben sicher ermitteln kann.
Codeschnipsel gibt es in der MSDN und bei Google massenhaft zu dem Thema.Auch http://www.mvps.org/win32/ könnte Dir weiterhelfen...
Gruß,
Raffi