Wieder mal CreatProcessAsUser()

gerhardtgerhardt

Grünschnabel
ich habe jetzt wirklich an allen möglichen Orten gesucht und komme einfach nicht weiter.

Aufgabe zusammengefasst:
1.) Ausführen eines Kommandos mit einer einfachen Anwendung ohne Fenster oder Konsole.
2.) Das Kommando startet einen mir unbekannten Prozess.Ich bekomme nur die IP und den Prozessnamen.
3.) Der unbekannte Prozess ist übrigens eine Javaanwendung.
4.) Domain, User und Password habe ich auch.

Was verwende ich:
-- Ich setze alle möglichen Privilegien SeTcbPrivilege,SeChangeNotifyPrivilege,...etc
-- Ich rufe LogonUser auf
Code:
LogonUser(user,domain,password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &hToken );

-- Ich rufe ImpersonateLoggedOnUser auf
Code:
ImpersonateLoggedOnUser(hToken);

-- Und dann CreateProcessAsUser
Code:
ok = CreateProcessAsUser(hToken,NULL,commando,NULL,NULL,true,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);




--WaitForSingleObject hat keinen Sinn mehr, da die Java exe mir den Prozessaufruf wieder nimmt und somit keine Verbindung mit meiner exe mehr besteht. diese beendet sich dann daher von selbst und das ist auch so gewollt.

Die Tatsachen:
Ich starte Meine Anwendung von meinem PC aus einem lokalen Verzeichnis. Und der "Javaprozess" wird auf dem Verzeichnis eines anderen Rechner gestartet und übernimmt korrekt seine Aufgaben.
Aber starte ich 1. meine Anwendnung von meinem PC aus dem Verzeichnis des gemappten PC, bekomme ich zwar richtige returncodes der oben genannten Funktionen, aber der Prozess tut gar nichts. Die Create... Funktion gibt auch 1 zurück.
Meine exe schließt sich dann wieder.

Starte ich 2. die Anwendung von gemappten PC aus bekomme ich fast gar keine Fehlercodes zurück.
So das Kuriosum:
zu letzterem bei LogOnUser kommt 1 zurück, also OK dann habe ich vorsichtshalber dahinter GetLastError() gesetzt und dort bekomme ich 2 zurück.
Die Create... Funktion scheitert

Liegt das an irgendwelchen weiteren Rechten?Aber am gemappten PC bin ich doch richtig angemeldet und ... Verzweifel

Vielleicht hat ja jemand von euch eine Idee.
Gerhardt
 
Noch einpaar Erweiterungen:

Ich habe nun versucht alle möglichen Privilegien zu setzen. Natürlich hat der andere PC auch sämtliche administrativen Rechte?
GetLastError() liefert mir dabei 1300(ERROR_NOT_ALL_ASSIGNED).
Alle Privilegien sind sicher nicht von Haus aus gesetzt.

Frage dazu: Müssen die Privilegien schon gesetzt sein und wie geschieht das explit auf dem PC?

Bei der direkten Ausführung auf dem anderen PC erscheint der Fehler 1307
(This security ID may not be assigned as the owner of this object.)

Hat das dann auch mit den Privilegien zu tun?

Ich habe das http://msdn2.microsoft.com/en-us/library/aa379608.aspx da ausprobiert und habe keine Änderungen erfahren. Die Situation ist immer noch die gleiche.

Leider darf ich kein .Net benutzen und muss mich auf diese Funktionen stützen.
Es ist zum Haare raufen und viel Zeit habe ich nicht mehr.

Gerhardt,der Verzweifelte.

PS. Wenn ich diese Rechte vorher an dem anderen PC manuell setzen muss, kann mir das dann wenigstens einer bestätigen.
 

Neue Beiträge

Zurück