Mein VC6 kennt die GetComputerNameEx() nicht!!!



  • Hallo,
    weiss jemand vieleicht warum mein pc oder vc6 die funktion GetComputerNameEx() nicht kennt, die GetComputerName() funktioniert gut, ich habe ein WinXP Prof. mit Sp2 und VisualStudio6 installiert!

    danke
    mirsad



  • Alles erfüllt?

    Windows NT/2000: Requires Windows 2000.
    Windows 95/98: Unsupported.
    Header: Declared in Winbase.h; include Windows.h.
    Library: Use Kernel32.lib.
    Unicode: Implemented as Unicode and ANSI versions on Windows 2000.



  • Hi estartu,
    ich hab winxp prof, die anwendung läuft auf dem selben rechner, die windows.h ist include, *rotwerd* 🤡 , das mit der Kernel32.lib bin ich mir nicht sicher, *rotwerd* 🤡
    mfg
    mirsad



  • Ich habs grade mal ausprobiert.

    Es geht auch unter Win2000 Prof nicht. Include hab ich gemacht und auch die lib angebunden. 😕



  • kann man damit informationen in dieser form herauskriegen z.B.
    Servername\Username
    oder
    Servername\\Username
    und das dazugehörige pwd! weil das nötig ist um tasks zu erstellen! ich lese den benutzername in ein editfeld ein , es geibt noch eins wo der benutzer sein passwort eingeben muß, ich möchte aber, ich muß prüfen ob das eingegebene passwort mit dem benutzer übereinstimmt! sonst gibt es ein problem und der task wird nie ausgeführt!



  • du glaubst doch wohl nicht ernsthaft das du irgendwelche passworte auslesen kannst.



  • du hast schon recht, es währe schon blöd 😮 ich hab etwas anderes gefunden was auch funktionieren könnte, wenn der task gespeichert wird dann kann ich prüfen ob der benutzer die rechte hat um tasks ´zu erstellen:

    hr = pIPersistFile->Save(NULL,TRUE); // Taskeigenschaften speichern
    // wenn jetzt hr den wert E_ACCESSDENIED hat dan hat der benutzer nicht 
    // die erforderlichen rechte dazu,  :rolleyes:   :confused: 
    if(hr == E_ACCESSDENIED)
    {
     MessageBox("blablabla");
    }
    else
    {
     // weitermachen
    }
    

    oder? 😕
    mfg



  • MessageBox("blablabla");
    

    Das wird nicht funzen.
    Musst de so machen:

    MessageBox("Text in der Box", "Überschrift", MB_OK);
    


  • Oder AfxMessageBox nehmen. 🙂



  • hi,
    hab mich geteuscht, das funktioniert nur zum teil! ich muß die prüfung auf rechte im system viel früher machen, bevor der benutzer etwas macht und nicht wenn er versucht einen task zu speichern! und die MessageBox(); ist das kleinste problem dabei 😋 und jetzt hab ich auch eine funktion die das ermöglicht nur das ich mit der nichts anfangen kann!!! 😮 😕
    die NetUserGetInfo() könnte die richtige sein aber da gibt es problemchen mit der NetUserGetInfo() und NetApiBufferFree()

    UserInfo.obj : error LNK2001: unresolved external symbol _NetApiBufferFree@4
    UserInfo.obj : error LNK2001: unresolved external symbol _NetUserGetInfo@16
    

    und ich wollte für den anfang eine einfache anwendung erstellen und sie dann erweitern und anpassen das ich mit der auch was anfangen kann!

    mfg
    mirsad



  • Service Pack 5 für den VS6 installiert ?



  • ich werd trotzdem den ganzen code posten es ist nicht viel, vieleicht kann jemand herausfinden wieso der Linker hier meckert!

    hier:

    #ifndef UNICODE
    #define UNICODE
    #endif
    
    #include <stdio.h>
    #include <windows.h> 
    #include <lm.h>
    
    int wmain(int argc, wchar_t *argv[])
    {
       DWORD dwLevel = 10;
       LPUSER_INFO_10 pBuf = NULL;
       NET_API_STATUS nStatus;
    
       if (argc != 3)
       {
          fwprintf(stderr, L"Usage: %s \\\\ServerName UserName\n", argv[0]);
          exit(1);
       }
       //
       // Call the NetUserGetInfo function; specify level 10.
       // hier die NetUserGetInfo() kennt er nicht
       nStatus = NetUserGetInfo(argv[1],
                                argv[2],
                                dwLevel,
                                (LPBYTE *)&pBuf);
       //
       // If the call succeeds, print the user information.
       //
       if (nStatus == NERR_Success)
       {
        if (pBuf != NULL)
          {
             wprintf(L"\n\tAccount:      %s\n", pBuf->usri10_name);
             wprintf(L"\tComment:      %s\n", pBuf->usri10_comment);
             wprintf(L"\tUser comment: %s\n", pBuf->usri10_usr_comment);
             wprintf(L"\tFull name:    %s\n", pBuf->usri10_full_name);
          }
       }
       // Otherwise, print the system error.
       //
       else
          fprintf(stderr, "A system error has occurred: %d\n", nStatus);
       //
       // Free the allocated memory.
       //
       if (pBuf != NULL)
          NetApiBufferFree(pBuf);
          // und die NetApiBufferFree() kennt er nicht
    
       return 0;
    }
    

    Dann kann ich prüfen ob der Benutzer ein Gast, User oder zu den Admins gehört, das ist alles was ich will 🙂 😕

    Mein OS WinXP Prof, VisualStudio6

    danke
    mirsad



  • Hast du die Netapi32.lib in den Projekteigenschaften eingetragen?

    Ansonsten scheint das ja das Beispiel aus der MSDN zu sein. 🙂



  • hallo ihr 2, 🙂
    @devil, nein ich habe noch keine sp's für vs installiert, bin dabei das zeug herunterzuladen!

    @estartu 🙂 das stimmt es ist aus der msdn, ich finde daraus kann man sehr viel über den benutzer herausfinden, die lib hab ich eingebunden und erhalte eine schöne fehlermeldung das die ein :

    C:\WINDOWS\ServicePackFiles\i386\Netapi32.dll : fatal error LNK1136: invalid or corrupt file
    

    😞 *rotwerd*, ich natürlich wieder ka was das jetzt heist!

    mfg
    mirsad



  • Frei übersetzt heißt der Fehler: Die dll zu der lib ist kaputt.

    Wodran das liegt oder wie man das repariert - keine Ahnung. Da das zu Windows selber gehört, würde ich (wenn es trotz VC-SP6 nicht geht) mal auf die Winupdate-Seite gehen und gucken, ob eine Patchrunde hilft.
    Auch, wenn ich es nciht wirklich glaube, aber es ist erstaunlich, wogegen das alles Patches gibt. 😮

    Ich versuche das mal als neues Projekt zu machen, mal sehen ob ich den Fehler auch bekomme. 🙂

    Edit: Nein, ich habe natürlich einen anderen:

    D:\test\test.cpp(56) : error C2664: 'NetUserGetInfo' : Konvertierung des Parameters 1 von 'char *' in 'const unsigned short *' nicht moeglich
    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

    😕
    Installier mal den VC Servide Pack 6 und guck dann nochmal. Vielleicht geht es dann ja.
    Komisch ist: Ich habe die lib nicht extra einbinden müssen. 😕



  • habe gerade den sp5 installiert un deht trotzdem nicht! die Netapi32.dll ist unter projectsettings->link unter Category General eingetragen, wenn ich die als Category Input dann kommt die gleiche fehler meldung :
    error LNK2001: unresolved external symbol _NetUserGetInfo@16
    ich weis langsam nicht mehr wo ich suchen muß, ich möchte nicht passwort auslesen oder sonst etwas geheimes, will nur wisen ob der user berechtigt ist tasks anzeigen und anzulegen 😮 , wenn ich mich als gast anmelde bricht mein programm ab, ist auch gut so denn den abbruch möchte ich abfangen und durch MessageBox ersetztn, in windows erhalte ich statt einen abbruch hüpsche meldung :"Keine Berechtigung"! , oder so in etwa, das ist alles, ich dachte nie dass das so ein problem sein kann! obwohl hier(msdn) viele beispiele vorhanden sind! 🙄 😕 😞
    gruß
    mirsad



  • Du musst doch die lib eintragen, nicht die dll. 😕

    Außerdem gibt es einen Service Pack 6.



  • gleich installiere ich auch noch den sp6 für vc6 😉



  • ok, das wars! es fehlte :
    lm.h ist war schon vorher drin,

    #pragma hdrstop 
    #pragma comment( lib, "netapi32.lib" )
    

    jetzt geht auch die NetUserGetInfo() 🙂
    mfg



  • Glückwunsch! 👍
    Auch wenn ich keine Ahnung habe, was die Befehle machen. 😕


Anmelden zum Antworten