LookupAccountName schlägt mit 1332 auf Windows 7 64-bit
Habe ich kleine Anwendung, die versucht, um die SID für einen Benutzer auf einem Windows 7 64 bit. Die Anwendung kompiliert wird als 64-bit.
PSID Sid;
DWORD cbReferencedDomainName, cbSid;
LPTSTR ReferencedDomainName;
SID_NAME_USE eUse;
DWORD dwRc = 0;
printf("Lookup %s\n",lpszAccountName);
cbReferencedDomainName = cbSid = 0;
if (LookupAccountName(NULL, lpszAccountName, 0, &cbSid,
0, &cbReferencedDomainName, &eUse)) {
printf("LookupAccountName passed\n");
return 0;
}
dwRc = GetLastError();
printf("LookupAccountName RC (%d)\n",dwRc);
Leite ich den Benutzer Namen in uid@hostname-format. Die API schlägt fehl, für jeden Benutzer, der auf dem Rechner mit GetLastError Rückkehr 1332 - "Zuordnungen von Kontennamen und Sicherheitskennungen wurden nicht durchgeführt.". Bitte helfen Sie.
- Falsches format, es ist nicht eine E-Mail-Adresse. Verwenden
domain\username
statt. - Danke. Die Maschine ist nicht in einer Domäne. Ich habe versucht Computername\Benutzer aber auch nicht.
- Verwenden
.\username
zu vermeiden, den Namen der Maschine falsch. Vergessen Sie nicht, verwenden Sie zwei backslashes in einem C-Programm. - MSDN-Website (msdn.microsoft.com/en-us/library/windows/desktop/...), sagt die API unterstützt [email protected] format auch. Versuchte .\Benutzername auch und dass auch nicht weiter.
- Ich habe festgestellt, dass für ein Nutzer-Konto lokal auf dem Computer, die Angabe '.\username' funktioniert nicht (führt zu Fehler 1332), sondern nur 'username' funktioniert. Wenn Sie versuchen, um ein Domänen-Konto in der form DOMÄNE\Benutzer Fehler geführt 1332 wegen meinem Rechner nicht Teil der Domäne, der user war ich versucht, zu suchen. Hinzufügen meine Maschine in der Domäne das problem gelöst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Kollegen und mich revisited dieses problem. Wir haben festgestellt, dass das problem war durch den Zeichensatz, in dem Visual Studio-Projekt-Einstellungen. Visual Studio standardmäßig setzt Zeichen gesetzt
Use Unicode Character Set
. Aber unsere Anwendung zu verwenden ASCII-Zeichensatz, wie unsere Anwendung zu Lesen Eingaben von der Kommandozeile aus. Also der input Lesen von der Kommandozeile war ASCII, aber wir kamen an, dass die Eingabe in Wide character version vonLookupAccountName
API, d.h.LookupAccountNameW
. Dies verursacht API zurück 1332 Fehlercode.Also änderten wir den Zeichensatz auf "Nicht Gesetzt" und die Anwendung neu kompiliert. Dies gewährleistet, dass die richtige form des API
LookupAccountNamA
verwendet wird. Das ist das problem gelöst. Ich glaube, die Einstellung Zeichensatz auf "" wird auch das problem zu lösen.Hoffe, dass dies nützlich sein wird.