Audi Geschrieben 18. Februar 2008 Teilen Geschrieben 18. Februar 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Februar 2008 Teilen Geschrieben 18. Februar 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 18. Februar 2008 Autor Teilen Geschrieben 18. Februar 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Februar 2008 Teilen Geschrieben 18. Februar 2008 Das hat mit GetComputerName nichts zu tun. Dein Programm benutzt die Funktion NetWkstaGetInfo. Die gibt's unter 98/ME nicht. P.S.: Ich habe mir erlaubt, dein Word-Attachment durch eine portable und erheblich kleinere Bitmapdatei zu ersetzen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Februar 2008 Teilen Geschrieben 18. Februar 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 18. Februar 2008 Autor Teilen Geschrieben 18. Februar 2008 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; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Februar 2008 Teilen Geschrieben 18. Februar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 18. Februar 2008 Autor Teilen Geschrieben 18. Februar 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 18. Februar 2008 Autor Teilen Geschrieben 18. Februar 2008 Danke dass du dir so viel Zeit nimmst um mir zu helfen!!! Bist der Beste im Forum!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. Februar 2008 Teilen Geschrieben 18. Februar 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 18. Februar 2008 Autor Teilen Geschrieben 18. Februar 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 21. Februar 2008 Autor Teilen Geschrieben 21. Februar 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 21. Februar 2008 Teilen Geschrieben 21. Februar 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Audi Geschrieben 21. Februar 2008 Autor Teilen Geschrieben 21. Februar 2008 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??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.