Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   GetUserNameEx (https://www.delphipraxis.net/66400-getusernameex.html)

Matze 10. Jul 2006 19:29

Re: GetUserNameEx
 
Zitat:

Zitat von sakura
Übernehmt diesen Beitrag endlich in die CodeLibrary.

Da bemüht man sich, nur funktionierendes in die CL aufzunehmen und wird so angemotzt, naja, Copy&Paste ...

Union 10. Jul 2006 19:51

Re: GetUserNameEx
 
Hallo,

bei mir ergibt es folgendes:
Zitat:

Zitat von Project1
0: Der angegebene Benutzer ist nicht vorhanden
1: CN=Oliver Funcke,OU=SBSUsers,OU=Users,OU=MyBusiness,DC=Softw areUnion,DC=local
2: SOFTWAREUNION\Oliver Funcke
3: Oliver Funcke
6: {fa58c2e6-f3b6-470c-93b1-672ac82cd0e5}
7: SoftwareUnion.local/MyBusiness/Users/SBSUsers/Oliver Funcke
8: Oliver Funcke@SoftwareUnion.local
9: SoftwareUnion.local/MyBusiness/Users/SBSUsers
Oliver Funcke
10: Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt
11: Der angegebene Benutzer ist nicht vorhanden

Interessant dabei:
Ich musste die Zeile mit SetString so umformulieren, da sonst das Nullbyte mit drin ist (ungünstig z.B. für ShowMessage):
Delphi-Quellcode:
SetString(Username, Buffer, Size-1)
Und bei (9:) steht tatsächlich ein $A for dem eigentlichen Namen

ichbins 17. Feb 2007 11:22

Re: GetUserNameEx
 
Mal eine ganz dumme Frage: In welcher Unit steht denn getusernameex? getusername findet er, aber getusernameex?

Ich hab alle D-2005 Standardunits eingebunden...

sakura 17. Feb 2007 11:26

Re: GetUserNameEx
 
Zitat:

Zitat von ichbins
Mal eine ganz dumme Frage: In welcher Unit steht denn getusernameex? getusername findet er, aber getusernameex?

Nirgends, siehe erster Post hier im Thread, da steht der Import aus der DLL.
Delphi-Quellcode:
function GetUserNameEx(NameFormat: DWORD;
  lpNameBuffer: LPSTR; var nSize: DWORD):Boolean; stdcall;
  external 'secur32.dll' Name 'GetUserNameExA';
...:cat:...

ichbins 17. Feb 2007 11:32

Re: GetUserNameEx
 
Sorry das hab ich irgendwie übersehen :oops:

himitsu 27. Aug 2009 08:53

Re: GetUserNameEx
 
Moin,

ich versuche die GUID des aktuellen Benutzers auszulesen und bekomme nur diese Meldung:
GetLastError: 1332
Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt


Was läuft denn da nur schief?


benutzte GetUserNameExW
Delphi-Quellcode:
Type EXTENDED_NAME_FORMAT = LongWord;

Const NameUniqueId = EXTENDED_NAME_FORMAT(6);

Function GetUserNameEx(NameFormat: EXTENDED_NAME_FORMAT; NameBuffer: PChar; Var Size: LongWord): Boolean; StdCall;
  External 'Secur32.dll' Name {$IF SizeOf(Char) = 1} 'GetUserNameExA' {$ELSE} 'GetUserNameExW' {$IFEND};
[add]
der Puffer ist mit 38 Zeichen (39 inkl. #0) groß genug und ich hab auch schon andere Werte versucht
- kleiner, dann kommt der "zu kleiner Puffer"-Fehler
- größer ändert nix
also am Puffer liegt es nicht

ich probier jetzt aber auch mal andere Formate (EXTENDED_NAME_FORMAT) aus

[add2]
alleine NameSamCompatible liefert ein Ergebnis, sonst kommt immer nur die 1332 :?

[add3]
arg :wall: , vergeßt es, ich seh grad, daß es der selbe Fehler ist, wie ihn Luckie schon auf Seite 1 hatte
und hier hatte eh keiner 'ne Lösung :cry:

napstar 9. Feb 2010 12:54

Re: GetUserNameEx
 
weiß einer warum das nicht compilierbar ist?..

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  NameUnknown = 0; // Unknown name type.
  NameFullyQualifiedDN = 1; // Fully qualified distinguished name
  NameSamCompatible = 2; // Windows NT® 4.0 account name
  NameDisplay = 3; // A "friendly" display name
  NameUniqueId = 6; // GUID string that the IIDFromString function returns
  NameCanonical = 7; // Complete canonical name
  NameUserPrincipal = 8; // User principal name
  NameCanonicalEx = 9;
  NameServicePrincipal = 10; // Generalized service principal name
  DNSDomainName = 11; // DNS domain name, plus the user name

function GetUserNameEx(NameFormat: DWORD;
  lpNameBuffer: LPSTR; var nSize: DWORD):Boolean; stdcall;
  external 'secur32.dll' Name 'GetUserNameExA';

function GetLoggedOnUserNameEx(fFormat: DWORD; var Username: String): DWORD;
var
  Size: DWORD;
  Buffer: array [0..1024] of Char;
begin
  Result := 0;
  Size := sizeof(Buffer);
  if GetUserNameEx(fFormat, Buffer, Size) then
    SetString(Username, Buffer, Size-1)
  else
    Result := GetLastError;
end;

procedure TForm1.Button2Click(Sender: TObject);
const
   NameFormats : Array[0..9] of DWORD = (
      NameUnknown,
      NameFullyQualifiedDN,
      NameSamCompatible,
      NameDisplay,
      NameUniqueId,
      NameCanonical,
      NameUserPrincipal,
      NameCanonicalEx,
      NameServicePrincipal,
      DNSDomainName);

var
  Username: String;
  err: DWORD;
  i : shortint;
  sMessage : string;
begin
   for i := 0 to high(NameFormats) do
   begin
      err := GetLoggedOnUserNameEx(NameFormats[i], Username);
      if err = 0 then
         sMessage := sMessage+format('%d: %s', [NameFormats[i], Username])+#13
      else
         sMessage := sMessage+format('%d: %s', [NameFormats[i], SysErrorMessage(err)])+#13;
   end;
   ShowMessage(sMessage)
end;

end.
bekomme diese meldung.
[DCC Fehler] Unit1.pas(50): E2010 Inkompatible Typen: 'Array' und 'PAnsiChar'

DeddyH 9. Feb 2010 13:02

Re: GetUserNameEx
 
Geht es so?
Delphi-Quellcode:
if GetUserNameEx(fFormat, @Buffer[0], Size) then

p80286 9. Feb 2010 13:03

Re: GetUserNameEx
 
mal eben durchgeschoben und kein Mecker bekommen!

Hast Du evtl. noch irgendwelche Reste aktiv?

Gruß
K-H

Mithrandir 9. Feb 2010 13:07

Re: GetUserNameEx
 
Über welche Delphiversion reden wir denn hier?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr.
Seite 4 von 6   « Erste     234 56      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz