Probleme mit GetUserName



  • Bei so komischen Problemen hilft manchmal im Menü:
    Erstellen -> Bereinigen
    Erstellen -> Alles neu erstellen



  • Natürlich schon gemacht.
    Auch ein Neustart hat das Problem nicht behoben.



  • Hi No-Name,

    Deine Funktion funktioniert anne für sich. Leider bleibt mein Problem.

    #define BUFSIZE 8192 
    LPTSTR lpszSystemInfo; // pointer to system information string 
    DWORD cchBuff = BUFSIZE; // size of computer or user name 
    TCHAR tchBuffer[BUFSIZE]; // buffer for string 
    lpszSystemInfo = tchBuffer; 
    LPTSTR sUserName; 
    // Get and display the name of the computer. 
    if( GetComputerName(lpszSystemInfo, &cchBuff) ) 
    	sUserName = lpszSystemInfo; 
    cchBuff = BUFSIZE; 
    if( GetUserName(lpszSystemInfo, &cchBuff) ) 
    sUserName = lpszSystemInfo; 
    // in sUserName steht mein Username. So wie es soll.
    
    CString Favoriten = "C:\\Dokumente und Einstellungen\\";
    Favoriten += sUserName;
    Favoriten += "\\Favoriten\\Google.lnk";
    // In Favoriten steht wieder nichts.
    // Schnellüberwachung sagt:
    +	Favoriten	{0x00000000 <Schlechtes Ptr>}	ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > >
    

    Wieso kann ich einen ganz normalen CString keinen Text übergeben???
    Normal ist das nicht.



  • Hi,

    UpdateData(FALSE);

    schon gemacht ?????

    hoffe konnte helfen
    weisnichtweiter



  • Wieso denn UpdateData(FALSE); ????

    Ich schreibe ja nichts in ein Dialogfeld.

    Vielmehr befinde ich mich noch in der OnInitDialog();



  • Hi,

    da erst die daten durch updatedata() übernommen werden muss
    updatedata(false) aufgerufen werden (bei einem CString).
    zumindest kenne ich es nur so. vielleicht gibt es ja noch ne andere
    möglichkeit, wenn wuerde mich das auch gern interessieren.
    ansonsten bleibt nur die möglichkeit mit LPTSTR oder LPCTSTR oder char
    denn dort brauchst du dann nichts weiteres aufrufen (updatedata() ).

    hoffe konnte helfen
    weisnichtweiter



  • Trikor schrieb:

    CString Favoriten = "C:\\Dokumente und Einstellungen\\";
    Favoriten += sUserName;
    Favoriten += "\\Favoriten\\Google.lnk";
    // In Favoriten steht wieder nichts.
    // Schnellüberwachung sagt:
    +	Favoriten	{0x00000000 <Schlechtes Ptr>}	ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > >
    

    Müsste glaube ich

    CString Favoriten = "C://Dokumente und Einstellungen//";
    Favoriten += sUserName;
    Favoriten += "//Favoriten//Google.lnk";
    // In Favoriten steht wieder nichts.
    // Schnellüberwachung sagt:
    +	Favoriten	{0x00000000 <Schlechtes Ptr>}	ATL::CStringT<char,StrTraitMFC<char,ATL::ChTraitsCRT<char> > >
    

    also \ in / umwandeln, das hatte mal bei mir Probleme bereitet, weiß aber nicht ob es auch hier hilft



  • Die Daten werden durch UpdateData(TRUE/FALSE) von Dialog in Variable bzw von Variable in Dialog geschrieben.
    Das hat aber nichts damit zu tun, das ich in eine normale lokale CString-Variable keinen Satz reinbekomme.



  • @Compufreak[C++]

    Da hast Du was durcheinander gebracht.

    Lokal nutzt man \\ das ergibt dann ein \ Siehe Explorer

    Online nutzt man http:// Siehe Adressleiste deines Browsers.



  • Hallo Trikor

    ofstream out("C:/test/crypt.txt");
    

    Das hier zum Beispiel funktioniert bei mir.

    ofstream out("C:\test\crypt.txt");
    

    Während das nicht funktioniert.

    Warum das so ist weiß ich nicht, war mir nur mal aufgefallen als ich ein Programm geschrieben hab.



  • Merkwürdig, aber darum geht es eigentlich nicht.

    Es geht ja nichtmal ein

    Favoriten = "Hallo";

    Kann es daran liegen, das ich noch in der OnInitDialog(); bin?

    Eigentlich ja nicht, oder?



  • Hi,

    Jetzt sollte es nukkeln

    DWORD dwBuffer = 256;
    CString strUserName,strFavoriten="C:\\Dokumente und Einstellungen\";
    CString strtmp,strGoogle="\\Favoriten\\Google.lnk";
    GetUserName(strUserName.GetBuffer(255), &dwBuffer);
    strtmp.Format("%s %s %s",strFavoriten,strUserName,strGoogle);
    MessageBox(strtmp,strUserName,MB_OK);

    hoffe konnte helfen
    weisnichtweiter



  • Du könntest auch .LoadString(UINT nID)
    du müsstest "\\Favoriten\\Google.lnk"; dann nur in eine ID speichern, ob es klappt weiß ich nicht, konnte es noch nicht testen.

    Vielleicht hilft es ja



  • @weisnichtweiter

    Danke jetzt geht´s. Das Prob fand ich trotzdem sehr merkwürdig.

    Aber mal was anderes. Gibt es eine Funktion, die den Domain-Namen zurück gibt?
    Sollte der Computer in einer Domäne sein, würden die Favoriten ja in
    C:\Dokumente und Einstellungen\trikor.Domänenname\Favoriten

    GetDomainName() geht leider nicht. Wäre auch zu leicht gewesen.


Anmelden zum Antworten