CreateProcessWithLogonW Verhalten W2k != XP



  • Hallo zusammen

    Ich habe ein Programm geschrieben, ein art Loader, welches mir ein weiteres beliebiges Programm unter einem anderen Benutzernamen startet.
    Hintergrund: Das "beliebige" Programm muß Daten auf ein Netztlaufwerk schreiben, welches vom normalen User, also am PC angemeldeten Benutzer, nicht verändert werden darf/kann.
    Der Loader verwendet CreateProcessWithLogonW um das beliebige Programm zu starten.
    Das Starten funktioniert unter W2k sowie unter XP, allerdings kann das beliebige Programm unter XP seine Daten nicht auf dem Netztlaufwerk ablegen, da keine Netzlaufwerke eingerichtet sind.

    Ich hoffe, daß dies so halbwegs verständlich war.
    Ich habe das gleiche mit der Kommandozeile versucht nachzustellen.
    Ich habe ein Netztlaufwerk x:
    Wenn ich nun über RunAs mit dem "speziellen" User eine Kommandozeile öffnen und auf x: zugreifen möchte funktioniert dies unter W2k jedoch nicht unter XP.

    Ich muß quasi beim CreateProcessWithLogonW dafür sorgen, daß der neue Prozess mit dem speziellen User die gleiche Umgebung hat als der User, welche CreateProcessWithLogonW ausgeführt hat.

    Hat hierfür jemand eine Idee, bzw wurde verstanden, was mein Problem ist?

    Hier noch der Code von CreateProcessWithLogonW:

    STARTUPINFOW si;
        PROCESS_INFORMATION ProcessInfo;
        WideString wsProtCopSvr = ExtractFilePath(ParamStr(0)) + "\\ProtCopSvr.exe";
    
        memset(&si, 0, sizeof(si));
        si.cb = sizeof(si);
    
        if(CreateProcessWithLogonW(L"user", NULL, L"password", 0, wsProtCopSvr, NULL, NULL, NULL, NULL, &si, &ProcessInfo) == false)
        {
            Log(GetSystemErrorMessage(), "ERROR CreateProcessWithLoginW:");
            return false;
        }
    

    Vielen Dank im voraus.
    MfG Stephan


Anmelden zum Antworten