Wie mit LookupAccountName den Domainnamen ermitteln?

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Wie mit LookupAccountName den Domainnamen ermitteln?

Beitrag von stbi »

Moin! Ich versuche gerade, mit Hilfe der Funktion LookupAccountName_() den Namen meiner Domain zu ermitteln. Diese Funktion schaut nach, ob der übergebene User lokal, in der eigenen Domain oder in Trusted Domains zu finden ist.
Funktioniert soweit, nur wenn ich einen Account sowohl auf der lokalen Maschinen als auch auf der Domain habe, liefert er mir natürlich den Namen der lokalen Maschine, ich hätte aber gerne die Domain ermittelt.

Code: Alles auswählen

OpenConsole()

CallDebugger

; username bitte anpassen
*username = AllocateMemory(256)
PokeS(*username, "stbi")

; erster Aufruf liefert die erforderlichen Puffergroessen
rc.l = LookupAccountName_(#NULL, *username, #NULL, @sidbuflen, #NULL, @dnbuflen, @sidtype)

*domainname = AllocateMemory(dnbuflen)
*sid = AllocateMemory(sidbuflen)

rc = LookupAccountName_(#NULL, *username, *sid, @sidbuflen, *domainname, @dnbuflen, @sidtype)

domain.s = PeekS(*domainname)
PrintN(domain)

Input()

CloseConsole()
Kann mir jemand helfen und sagen, wie ich diese Funktion dazu überrede, den Domainnamen auszuspucken? Danke!
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Bei mir verreckt der Code bei AllocateMemory. Du hast nicht alle Variablenwerte angegeben. Z. B. was für ein Wert versteckt sich hinter dnbuflen?


Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

Moin! Bei mir (3.93) funktioniert der Code.

Da der Typ von dnbuflen nicht explizit angegeben wurde, wird es als long initialisiert.

Beim ersten Aufruf von LookupAccountName_() werden nur die benötigten Puffergrößen für die SID und den Domainname abgefragt, dann werden die Puffer angelegt und im zweiten Aufruf schließlich gefüllt.

Debugge mal, was Du für dnbuflen und sidbuflen vor dem AllocateMemory() für Werte rausbekommst.
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

Tja, man sollte ab und an mal auf rückgabewerte checken ;)

Code: Alles auswählen

OpenConsole()

; username bitte anpassen
*username = AllocateMemory(256)
PokeS(*username, "zings")

; erster Aufruf liefert die erforderlichen Puffergroessen
rc.l = LookupAccountName_(#NULL, *username, #NULL, @sidbuflen, #NULL, @dnbuflen, @sidtype)
If dnbuflen=0
 Beep_(100,100)
 PrintN("Wrong username")
Else
 *domainname = AllocateMemory(dnbuflen)
 *sid = AllocateMemory(sidbuflen)
 rc = LookupAccountName_(#NULL, *username, *sid, @sidbuflen, *domainname, @dnbuflen, @sidtype)
 domain.s = PeekS(*domainname)
 PrintN(domain)
EndIf  

Input()
CloseConsole()
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

stbi hat geschrieben:Moin! Bei mir (3.93) funktioniert der Code.
Ich habe auch 3.93 und der Code funktioniert nicht.
Da der Typ von dnbuflen nicht explizit angegeben wurde, wird es als long initialisiert.
Jepp, das stimmt. Das Problem ist nur, die Variable ist 0. AllocateMemory funktioniert daher nicht. Dasselbe ist mit sidbuflen, diese Variable ist ebenfalls 0.


Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
stbi
Beiträge: 685
Registriert: 31.08.2004 15:39
Wohnort: Cleverly Hills

Beitrag von stbi »

Rings hat geschrieben:Tja, man sollte ab und an mal auf rückgabewerte checken ;)
jaha, aber das war ja nur eine "Machbarkeitsstudie" 8) und kein fertiges Programm, im Debugger sieht man ja rc und dnbuflen, deshalb hab ich da auch nen rc drin
PB 4.02 XP Pro SP2 "Der Code ist willig, aber der Prozessor ist schwach."

Es gibt keine Vista-Witze. Es ist alles wahr!
Antworten