Computername herausfinden?

Alles rund um die Programmierung mit Qt
Antworten
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

Computername herausfinden?

Beitrag von tribari »

Hallo allerseits,

gibt es eine einfache Methode um mit QT den Computernamen zu ermitteln?

Habe bisher nur Lösungen die über die WINAPI gehen gefunden - und irgendwie scheitert es da leider an meiner Erfahrung... ;-)

Evtl. gibt es ja auch etwas einfacheres.

mfg

tribari
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

Beitrag von tribari »

gracias ;-)
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Entweder wie oben stehend oder doch was aus der stdlib ^^ Ist gar nicht so schwer, wie du denkst ;)

Mit der Funktion getenv() kannst du dir alle möglichen Informationen aus den Systemvariablen holen, z.B. Path-Variablen, Benutzer und so weiter. Dazu gehört auch die Umgebungsvariable COMPUTERNAME. Also:

Code: Alles auswählen

QString computer_name = getenv( "COMPUTERNAME" );
...ist die einfachste Methode. Geht auch sicherer, aber etwas umständlicher (Buffer selbst allokieren etc)

Doku
Windows Pfadvariablen
thrall
Beiträge: 4
Registriert: 2. August 2010 15:46

Beitrag von thrall »

Exasperation hat geschrieben:

Code: Alles auswählen

QString computer_name = getenv( "COMPUTERNAME" );
...ist die einfachste Methode. Geht auch sicherer, aber etwas umständlicher (Buffer selbst allokieren etc)
Das ist keine so gute Idee. Spätestens auf einem Rechner, der nicht für Deutschland konfiguriert ist, wird getenv("COMPUTERNAME") scheitern. Ausserdem sieht es unter einem anderen Betriebssytem als Windows schlecht aus.
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Da er die WINAPI erwähnte bin ich von Windows ausgegangen. Und das Token COMPUTERNAME ist in der WINAPI verankert, das ist unabhängig von der eingestellten Sprache ;)

Siehe:
Default Values on Windows
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Die Lösung über getenv ist genauso Quatsch wie wenn die Unix-Leute schreiben würden "lies doch einfach /etc/hostname aus". Jedenfalls in einem Qt-Forum.
tribari
Beiträge: 63
Registriert: 23. Juli 2008 13:31
Wohnort: Braunschweig

Beitrag von tribari »

also erst einmal danke für die konstruktiven ideen.

aber ich denke über die Systemvariablen zu gehen ist eher unsauber - das wäre zwar die einfachste Variante... aber, wie schon erwähnt, wird dies evtl. bei einem System mit Englischer Sprache Probleme geben...
Mein Programm wird später nur auf Windows-Rechnern eingesetzt - daher hätte ich auch kein Drama damit über die WINAPI zu gehen...

Aber QHostInfo::localHostName() tut genau das, was ich benötige... also wieso noch großen Aufwand betreiben ? :D

Einzigstes Problem welches ich bei QHostInfo festgestellt habe, ist dass der erste Aufruf ca. 1-2 sec benötigt... aber das ist noch vertretbar.

lg

tribari
thrall
Beiträge: 4
Registriert: 2. August 2010 15:46

Beitrag von thrall »

Exasperation hat geschrieben:Da er die WINAPI erwähnte bin ich von Windows ausgegangen. Und das Token COMPUTERNAME ist in der WINAPI verankert, das ist unabhängig von der eingestellten Sprache ;)

Siehe:
Default Values on Windows
Ok, ist nicht Sprachabhängig ;-) Und für NUR Windows Anwendungen wirds auch tun.

Allerdings hab ich die Erfahrung gemacht, dass man evtl. doch irgend wann mal auf ein anderes System erweitern will. Dann ist man froh, wenn möglichst wenig angepasst werden muss. Und da Qt sich wunderbar für plattformübergeifende Anwendungen eignet, sollte man meiner Meinung nach alle Plattform abstrahierenden Möglichkeiten von Qt nutzen.

Btw. ich war neugierig und ab auf einer Windows-Kiste einfach mal die Umgebungsvariable umgesetzt. Damit lässt sich dann einem Tool, dass das Environment nutzt, ein anderer Computername vorgaukeln... aber wer sollte sowas schon machen ;-)
thrall
Beiträge: 4
Registriert: 2. August 2010 15:46

Beitrag von thrall »

tribari hat geschrieben:Aber QHostInfo::localHostName() tut genau das, was ich benötige... also wieso noch großen Aufwand betreiben ? :D

Einzigstes Problem welches ich bei QHostInfo festgestellt habe, ist dass der erste Aufruf ca. 1-2 sec benötigt... aber das ist noch vertretbar.
Seltsam, warum sollte das so lange dauern...
Eigentlich mach QHostInfo::localHostName() nicht viel mehr als gethostname() (Siehe http://msdn.microsoft.com/en-us/library ... S.85).aspx) aufzurufen und das Ergebnis zu QString umzuwandeln...
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Beitrag von Exasperation »

Plattformunabhängigkeit ist natürlich ein erstrebenswertes Optimum, da geb ich dir Recht :P

Ich nutze für meine (Windows-) Programme gerne die Systemvariablen um z.B. mit APPDATA auf das Verzeichnis für Anwendungsdaten zuzugreifen etc.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Exasperation hat geschrieben:Plattformunabhängigkeit ist natürlich ein erstrebenswertes Optimum, da geb ich dir Recht :P

Ich nutze für meine (Windows-) Programme gerne die Systemvariablen um z.B. mit APPDATA auf das Verzeichnis für Anwendungsdaten zuzugreifen etc.
siehe http://doc.trolltech.com/4.5/qdesktopse ... geLocation
Antworten