Seite 1 von 1
Computername herausfinden?
Verfasst: 29. Juli 2010 14:30
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
Verfasst: 29. Juli 2010 14:35
von solarix
Verfasst: 29. Juli 2010 14:36
von tribari
gracias

Verfasst: 29. Juli 2010 14:42
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:
...ist die einfachste Methode. Geht auch sicherer, aber etwas umständlicher (Buffer selbst allokieren etc)
Doku
Windows Pfadvariablen
Verfasst: 2. August 2010 20:06
von thrall
Exasperation hat geschrieben:
...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.
Verfasst: 5. August 2010 07:13
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
Verfasst: 5. August 2010 08:41
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.
Verfasst: 5. August 2010 08:56
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 ?
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
Verfasst: 5. August 2010 09:05
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

Verfasst: 5. August 2010 09:13
von thrall
tribari hat geschrieben:Aber QHostInfo::localHostName() tut genau das, was ich benötige... also wieso noch großen Aufwand betreiben ?
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...
Verfasst: 5. August 2010 11:18
von Exasperation
Plattformunabhängigkeit ist natürlich ein erstrebenswertes Optimum, da geb ich dir Recht
Ich nutze für meine (Windows-) Programme gerne die Systemvariablen um z.B. mit
APPDATA auf das Verzeichnis für Anwendungsdaten zuzugreifen etc.
Verfasst: 5. August 2010 13:27
von solarix
Exasperation hat geschrieben:Plattformunabhängigkeit ist natürlich ein erstrebenswertes Optimum, da geb ich dir Recht
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