Gib es so was wie "ConnectAsUser" oder "LoggonAsUser"



  • Hallo,

    ich suche eine Funktion die mir erlaubt innerhalb meiner Applikation Aktionen unter einem anderen Users (z.B. dem Administrators) auszuführen.
    Im ersten Schritt wäre es die Methode Connect() von TRegistry, erweitert um die Eingabe von User und Passwort.
    Denkbar wäre auch so was wie CreatProcessAsUser() für einen Thread.

    Jemand eine Idee ?
    Danke
    Mikel



  • Den Benutzerkontext wechseln, das geht, wenn überhaupt, sicher nur per WinAPI. Dorthin verschoben.



  • ImpersonateLoggedOnUser(). Das Handle bekommst Du von LogonUser, genau wie für CreateProcessAsUser.



  • @-King-

    bin leider nicht der Profi was die WinAPI Programmierung anbelangt.
    Wäre also dankbar für ein bischen Beispiel Code. 🙄

    Danke
    Mikel



  • Oh, sorry. Da Du von CreateProcessAsUser sprachst, dachte ich, daß Du das kennst. Ich habe Dir aber eben schnell ein Sample zusammengestellt:

    {
      HANDLE hToken;
      DWORD  dwSize;
      TCHAR  szName[256];
    
        dwSize = sizeof(szName) / sizeof(szName[0]);
    
        GetUserName(szName, &dwSize);
        MessageBox(NULL, szName, NULL, MB_OK);
    
        if(LogonUser(TEXT("NeuerUserName"), NULL, TEXT("Password"), LOGON32_LOGON_BATCH, LOGON32_PROVIDER_DEFAULT, &hToken))
        {
            ImpersonateLoggedOnUser(hToken);
    
            dwSize = sizeof(szName) / sizeof(szName[0]);
            GetUserName(szName, &dwSize);
    
            RevertToSelf();
            CloseHandle(hToken);
    
            MessageBox(NULL, szName, NULL, MB_OK);
        }
    }
    

    Dummerweise brauchst Du unter Windows 2000 das Privilege SE_TCB_NAME. Das Privilege muß zwar nicht enabled sein, aber gehalten werden muß es auf jeden Fall. Die User halten es per default nicht (auch nicht die Admins) und sollten es auch nicht halten. Am Besten verpackst Du das alles in einen Service.

    [ Dieser Beitrag wurde am 27.12.2002 um 23:55 Uhr von -King- editiert. ]



  • Danke damit komme ich weiter.

    Gruß Mikel


Anmelden zum Antworten