Rückgabewert von CreateProcessWithLogonW und GetLastError
-
Ich habe versucht das Ganze in C++ nachzubauen und es hat auch geklappt.

Wenn ich einen falschen Benutzername oder Passwort eingebe dann liefert bei mir CreateProcessWithLogonW 0 zurück und GetLastError ist 1326 (Anmeldung fehlgeschlagen: unbekannter Benutzername oder falsches Kennwort.).
WinXP SP2
-
Erst mal danke für deine Mühe. Könntest du mir mal bitte deinen Code zeigen?
-
Jau, kann ich machen.
#define _WIN32_WINNT 0x0500 #include <windows.h> #include <iostream> int main() { STARTUPINFOW startupInfo; ZeroMemory(&startupInfo, sizeof(STARTUPINFOW)); startupInfo.cb = sizeof(STARTUPINFOW); startupInfo.dwFlags = STARTF_USESHOWWINDOW; startupInfo.wShowWindow = SW_SHOWNORMAL; PROCESS_INFORMATION processInformation; WCHAR commandLine[MAX_PATH]; lstrcpyW(commandLine, L"C:\\test.exe"); BOOL ret = CreateProcessWithLogonW(L"Administrator", NULL, L"xxx", LOGON_WITH_PROFILE, NULL, commandLine, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &startupInfo, &processInformation); if(ret) { std::cout << "CreateProcessWithLogonW succeed!" << std::endl; } else { std::cout << "CreateProcessWithLogonW failed! " << GetLastError() << std::endl; } }Du kannst ja auch mal dein Programm hochladen, dann kann ich das mal testen was bei mir für ein GetLastError Wert kommt.
-
Danke. Kannst du Delphi bzw. hast einen Delphi Compiler zur Verfügung? Dann kannst du es dir hier: http://runasuser.luckie-online.de mit Quellcode runterladen. Zur Zeit kommt in der Version noch eine eigene Messagebox - logisch konnte ich ja nicht so lassen.

OS ist bei mir übrigens Windows2000 SP4.
-
Leider hab und kann ich kein Delphi.
Kannst du nicht kurz eine Version erstellen die in der MessageBox die GetLastError Nummer oder den Text ausgibt?
Konntest du meinen Code bei dir testen? Wenn ja wie war das Ergenis?
-
Ja mache ich gleich (Deinen Code testen und meinen anpassen und hochladen).
-
So: Hier die Version mit getLastError: http://www.luckie-online.de/Ablage/
Deinen Code teste ich gleich mal. Muss nur erst das VC anschmeißen und mich da wieder durchfuchsen.
-
Habs probiert. Bei mir wird "Der Vorgang wurde erfolgreich beendet" ausgegeben, wenn ich ein falsches Passwort eingebe.
Also muss es doch an deinem Code liegen, obwohl ich keinen Unterschied zu meinem erkennen kann.

-
Hmpf. Ich auch nicht. das ist es ja. Aber deinen bekomme ich nicht zum Laufen. Ich habe eine Konsolen anwendung erstellt und deinen Code kopiert:
e:\c\programme\beispiel - demos\runasuser\runasuser.cpp(19) : error C2065: 'CreateProcessWithLogonW' : nichtdeklarierter Bezeichner e:\c\programme\beispiel - demos\runasuser\runasuser.cpp(22) : error C2065: 'LOGON_WITH_PROFILE' : nichtdeklarierter Bezeichner e:\c\programme\beispiel - demos\runasuser\runasuser.cpp(39) : warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommenDie Header-Dateien sind allerdings noch die alten vom VC 6. Und die nötigen Libs habe ich eingebunden. Schickst du mir einfach mal die Exe bitte? Oder das komplette Projekt? wäre nett von dir. Danke. Mail Adresse auf meiner Homepage im Copyright.
-
So, ein Freund hat den Fehler gefunden:
http://www.delphipraxis.net/post306577.html#306577