Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Unicode Eingabe einlesen

  Alt 31. Jan 2007, 12:34
So. So sieht es bisher aus:
Code:
#include "stdafx.h"
#include <windows.h>
#include <Sddl.h>

#define INFO _T("Ausgabe der SIDs zu einem Principal\n")
#define QUERYINPUT _T("Principal (z.B. Benutzername): ")

DWORD GetStrSID(LPCWSTR server, LPCWSTR principal, LPWSTR &StrSID)
{
   // SID ermitteln und in lesbare Form umwandeln
   // in StrSID zurückgeben
   PSID Sid;
   DWORD cbSize = 0;   
   if (LookupAccountNameW(NULL, principal, NULL, &cbSize, NULL, NULL, NULL))
   {
      Sid = (PSID) new BYTE[256];
      LookupAccountNameW(NULL, principal, Sid, &cbSize, NULL, NULL, NULL);
      //ConvertSidToStringSidW(Sid, StrSID);
      delete Sid;
   }
   return GetLastError();
}

int wmain(int argc, _TCHAR* argv[])
{
   WCHAR principal[80], *StrSID = principal;
    DWORD LastError;

   wprintf(INFO);
   wprintf(QUERYINPUT);
   wscanf(L"%s", &principal);
   wprintf(L"%s\n", principal);
   LastError = GetStrSID(NULL, principal, StrSID);
   if (LastError == 0)
   {
      wprintf(L"%s", StrSID);
   }
   else
   {
      wprintf(L"%i", LastError);
   }
   getchar();
   return 0;
}
Allerdings kennt er die API-Funktion ConvertSidToStringSidW nicht, obwohl ich die Sddl.h eingebunden und die Advapi32.lib mit gelinkt wird. Benutzen tue ich das Visual Studio 2005.

Ich habe die Funktion erstmal auskommentiert, aber trotzdem kommt es noch zu einer AV beim Aufruf von if (LookupAccountNameW(NULL, principal, NULL, &cbSize, NULL, NULL, NULL)).
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat