Zum Inhalt springen

GetComputerName in Win98/ME?


Audi

Empfohlene Beiträge

Hallo zusammen!

Habe hier ein Problem, an dem ich schon lage sitze und nicht weiter komme:(

Wie bekomme ich die Funktion GetComputerName() in Win98/ME zum laufen?

Habe in verschiedenen Foren geschaut, aber nichts gefunden.

Muss man unbedigt eine API estellen? (kann dass nicht)

Könnte es mir jemand erklären, wie ich jetzt weiter vorgehen soll?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich sollte das wohl noch etwas genauer beschreiben:

Dein Programm benutzt NetWkstaGetInfo, und zwar mit Load-Time Dynamic Linking. Das bedeutet, dass beim Erstellen des Programms eine Importbibliothek benutzt wurde, die eine Abhängigkeit zu einer DLL herstellt. Diese Abhängigkeit wird beim Start des Programms geprüft, und schlägt unter 95/98/ME fehl, weil die dort vorhandene DLL diese Funktion nicht enthält.

Das bedeutet erstens, dass du dein Programm offensichtlich nicht mit den korrekten Einstellungen erstellt hast, um es unter 9X/ME lauffähig zu machen, denn dann hättest du es gar nicht kompilieren können. Die Windows-Headerdateien sind diesbezüglich ziemlich gründlich.

Zweitens bedeutet das, dass du Run-Time Dynamic Linking benutzen musst, um diese Funktion unter NT/2000/XP usw. benutzen zu können, wenn dasselbe Programm auch unter 9X/ME laufen können soll. Sprich LoadLibrary/GetProcAddess.

Link zu diesem Kommentar
Auf anderen Seiten teilen

RunTimes hab ich!

Brauche eigentlich nur den Computernamen und die Arbeitsgruppe ausgeben.

Würde diese Grundstruktur gehen?

#define SECURITY_WIN32

#include <windows.h>

#include <stdafx.h>

#include <tchar.h>

#include <stdio.h>

#include <sspi.h>

int main(int argc, char* argv[])

{

char m_szComputerName[MAX_COMPUTERNAME_LENGTH + 1];

DWORD dwComputerNameSize = MAX_COMPUTERNAME_LENGTH + 1;

::GetComputerName (m_szComputerName, &dwComputerNameSize);

char m_szUserName[256];

DWORD dwUserNameSize = 256;

::GetUserNameEx(NameSamCompatible, m_szUserName, &dwUserNameSize);

printf("%s\n", m_szComputerName);

printf("%s\n", m_szUserName);

return 0;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

RunTimes hab ich!
Was soll das sein?

Brauche eigentlich nur den Computernamen und die Arbeitsgruppe ausgeben.
Dann mach es doch so, wie hier beschrieben:

http://forum.fachinformatiker.de/windows-betriebssysteme/112564-arbeitsgruppe-win98-auslesen.html

Würde diese Grundstruktur gehen?
Wenn das jemals unter Windows 9X/ME laufen soll, nein. GetUserNameEx gibt es erst ab Windows 2000. Aber das hatten wir doch alles schon mal:

http://forum.fachinformatiker.de/c-c/111944-alternative-zu-getcomputernameex-weil-nur-xp-funzt.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was soll das sein?

RunTimes sind DLLs die zum betrieb notwendig sind:)

dachte es ist ein Begriff der bekannt sei.

Dann mach es doch so, wie hier beschrieben:

http://forum.fachinformatiker.de/windows-betriebssysteme/112564-arbeitsgruppe-win98-auslesen.html

Hab ich und es funzt super :uli (jedes MS OS ab 98) danke!!! aber es werden zu viele Infos ausgegeben, wie gesagt brauche nur 2(Arbeitsgruppe und Computername).

Wenn ich bei "net config (workstation)" bleibe, kann ich die "unnötigen" Ausgabewerte löschen? Wenn ja wie?, soll nicht so einfach sein.

Wenn das jemals unter Windows 9X/ME laufen soll, nein. GetUserNameEx gibt es erst ab Windows 2000. Aber das hatten wir doch alles schon mal:

http://forum.fachinformatiker.de/c-c/111944-alternative-zu-getcomputernameex-weil-nur-xp-funzt.html

Dass kann man vergessen läuft nicht unter 2000.

Link zu diesem Kommentar
Auf anderen Seiten teilen

RunTimes sind DLLs die zum betrieb notwendig sind

dachte es ist ein Begriff der bekannt sei.

Das ist ein fachlich sehr ungenauer Begriff. Außerdem sehe ich nicht, was es mit deinem Problem zu tun hat.

Hab ich und es funzt super (jedes MS OS ab 98) danke!!! aber es werden zu viele Infos ausgegeben, wie gesagt brauche nur 2(Arbeitsgruppe und Computername).

Wenn ich bei "net config (workstation)" bleibe, kann ich die "unnötigen" Ausgabewerte löschen? Wenn ja wie?, soll nicht so einfach sein.

Du musst doch aus der Ausgabe nur das rauspicken, was du brauchst. Das ist doch nicht mehr als Stringverarbeitung. Allerdings musst du wahrscheinlich noch auf unterschiedliche Sprachen achten.

Dass kann man vergessen läuft nicht unter 2000.
Unter Windows 2000 kannst du dann ja einen anderen Mechanismus benutzen.

Aber es ist vermutlich wirklich am einfachsten, wenn du die Ausgabe des Konsolenbefehls in eine Datei umleitest, diese Datei dann einliest und verarbeitest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ne, muss jetzt mit GetComputerName() arbeiten, so hat man mir es "befohlen"!

Muss wie gesagt:

A. Computername

B. Arbeitsgruppe/Domännamen herausbekommen

Code:

#include <stdio.h>

#include <windows.h>

bool _GetComputerName(char* pszDomainName,

unsigned long ulSizeDomainName,

char* pszName,

unsigned long ulSizeName)

{

}

int wmain(int argc, char *argv[])

{

system("pause");

}

Wie muss/soll ich weiter vorgehen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ne, muss jetzt mit GetComputerName() arbeiten, so hat man mir es "befohlen"!
Dann hast du eine unmögliche Aufgabe erhalten. GetComputerName liefert dir nur den NetBIOS-Namen, nicht die Domäne oder Arbeitsgruppe.

Wie schon mehrfach gesagt, müsstest du NetWkstaGetInfo benutzen, was in Windows 9X/ME nur in einer 16Bit-DLL vorliegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK, habe mit meinem Chef gesprochen,

ich soll es so machen wie ich es für richtig halte, muss nur zum Schluß funzen (Ausgabe + jedes Win/OS ab 98).

Die Funktion soll aber trotzdem mit GetComputerName aufgerufen werden, also so wie oben im Code dargestellt, danach kommt mein Code und die Ausgabe soll wieder über GetComputerName erfolgen.

Ich habe mir es so überlegt, dass ich die Komandozeilen Ausgabe von ((net config/net config workstation) OS abhängig), in eine txt Datei (die vorher erstellt werden soll) schreibe, dann meine erforderlichen Strings in mein Programm kopiere (in die Ausgabe), (die txt Datei soll dann gelöscht werden) so kann ich nach wunsch jeder Zeit auf die Strings zugreifen.

Und die Sprache spielt dann keine Rolle mehr!

Ist meine Überlegung korrekt, oder muss noch etwas beachtet/verbessert werden???

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...