anmelde name

scorpionx

Mitglied
Hallo ich muss es irgendwie hinbekommen, dass ich den Anmeldename in meiner MFC einbinden kann/muss! Der Sinn soll sein das beim Nachrichten versicken per NetSend kein missbrauch zustande kommen kann!

Grüße und danke für die antworten!
X
 
also mal zur details!

Windows Anmeldename -----> Im Dialog!
Ich arbeite in einer Firma die ca. 200 Mitarbeiter hat!
da es nun riskant wäre ein Eingabefeld zumachen, in denen man sein Name schreiben kann, hab ich beschlossen den Namen der Benutzer von Windows zunehmen. wäre dankbar für einige antworten
 
Es gibt eine Umgebungsvariable USERNAME. Die kannst Du abfragen.Oder Du verwendest die SDK-Funktion GetUserName:
MFC hat gesagt.:
BOOL GetUserName(
LPTSTR
lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);
 
Der angemeldete muss doch irgendwo in Registry sein oder?
kann man es nicht irgendwie verknüpfen?

und wo soll ich das hier einfügen
BOOL GetUserName(
LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
);
 
Du mußt die Funktion nicht einfügen, Du mußt sie aufrufen! Und zwar da, wo Du den Usernamen brauchst.

Der angemeldete muss doch irgendwo in Registry sein oder?
Ich habe ihn in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer gefunden. Aber ich weiß nicht, ob das die 'offizielle Stelle' dafür ist. Warum willst Du den Name denn umständlich aus der Registry lesen, wenn Du ihn direkt bekommen kannst? Oder programmierst Du nicht mit C++?
 
Doch na klar!
Sonst hätt ich diesen Topic nicht hier geöffnet!

ich werde es versuchen mit dem was du gegeben hast!

danke schon mal
 
diese fehlermeldung kommt

--------------------Konfiguration: Net Send - Win32 Debug--------------------
Kompilierung läuft...
Net SendDlg.cpp
C:\Dokumente und Einstellungen\mein.name\Desktop\test!\Net Send\Net SendDlg.cpp(347) : error C2373: 'GetUserNameA' : Neudefinition; unterschiedliche Modifizierer
c:\programme\microsoft visual studio\vc98\include\winbase.h(7758) : Siehe Deklaration von 'GetUserNameA'
Fehler beim Ausführen von cl.exe.

Net SendDlg.obj - 1 Fehler, 0 Warnung(en)

wenn ich das so einfüge:

void CNetSendDlg::OnChangeEdit4()
{
// TODO: Wenn dies ein RICHEDIT-Steuerelement ist, sendet das Steuerelement diese

// Benachrichtigung nicht, bevor Sie nicht die Funktion CDialog::OnInitDialog()

// überschreiben und CRichEditCrtl().SetEventMask() aufrufen, wobei

// eine ODER-Operation mit dem Attribut ENM_CHANGE und der Maske erfolgt.



// TODO: Fügen Sie hier Ihren Code für die Benachrichtigungsbehandlungsroutine des Steuerelements hinzu

BOOL GetUserName(
LPTSTR lpBuffer, // address of name buffer
LPDWORD nSize // address of size of name buffer
)
;
}
 
Hi.

jokey2 hat doch gesagt, du sollst die Funktionsdeklaration nicht einfügen sondern die Funktion aufrufen. Er hat dir lediglich gezeigt wie du Funktion deklariert ist damit du weißt wie du sie verwenden mußt. Dann hätte man natürlich noch suchen bzw. die MSDN besuchen können.
Code:
TCHAR username[50];
DWORD bufsize = sizeof(username);

if (GetUserName(username, &bufsize)) {
  /* Username konnte ermittelt werden. */
  cout << "username: " << username << ", length: " << bufsize << endl;
} else {
  /* Fehler: Stringpuffer vermutlich zu kurz. */
  cerr << "Fehlercode: " << GetLastError() << endl;
}
Gruß
 
Das geht doch gar nicht!

Der soll mich zb auf dem schreibgeschützten eingabe feld einzeigen wer grade angemeldet ist!
 
Zuletzt bearbeitet:
scorpionx hat gesagt.:
Das geht doch gar nicht!

Der soll mich zb auf dem schreibgeschützten eingabe feld einzeigen wer grade angemeldet ist!
Ich nehme an du beziehst dich auf die Ausgabe? Das war doch nur ein Beispiel damit du siehst das sowohl username als auch die Länge des Namens (inkl. dem NUL Zeichen) zurückgegeben wird und wie man den Fehlercode ermittelt.

Was du mit dem Benutzernamen dann machen willst ist doch völlig uninteressant für die Frage.

Gruß
 
Zurück