Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

GetComputerName in Win98/ME?

Empfohlene Antworten

Veröffentlicht

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?

Wie bekomme ich die Funktion GetComputerName() in Win98/ME zum laufen?
Das sollte von ganz allein gehen.

Könnte es mir jemand erklären, wie ich jetzt weiter vorgehen soll?
Sag doch erst einmal, was "ich komme nicht weiter" konkret heißt. Mit dieser Fehlerbeschreibung kann man nämlich nichts anfangen.

Habe die Fehlermeldung im Anhang.

Ich komme nicht mit dem Programm weiter, weil ich diese Fehlermeldung bekomme.

Auf XP, 2000, Vista läufts, aber auf 98/ME nicht.

post-45609-14430447830437_thumb.png

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.

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;

}

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

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.

Danke dass du dir so viel Zeit nimmst um mir zu helfen!!!

Bist der Beste im Forum!!!

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.

Richtig auf Sprachen muss ich auch achten!

OK werde es versuchen, denn mit "net config" gefällt es mir am besten! wenns nicht klappen sollte, melde ich mich noch mal.

bis dahin

thx

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?

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.

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???

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.