Programm unter anderer Benutzerkennung ausführen



  • Hallo,

    ich glaube diese Frage wurde schon oft gestellt, aber für WinApi finde ich einfach keine Lösung:

    wie kann ich ein Programm unter anderer Benutzerkennung ausführen?

    (User A startet ein Programm als User 😎

    Gruß
    Fabian



  • CreateProcessWithLogonW



  • Vielen Dank für diesen Tipp, ich werde es gleich mal ausprobieren 🙂
    Ich hatte erst mit CreateProcess() zumprobiert...



  • Es gibt noch CreateProcessAsUser, aber dazu benötigt man besondere Privilegien, die der normale Benutzer normalerweise nicht hat.



  • Vielen Dank für die hilfreichen Antworten 🙂, ich habe es mit CreateProcessWithLogonW hinbekommen:

    bool RunAs(wchar_t* szPath, wchar_t* szCmd, wchar_t* szDomain, wchar_t* szUsername, wchar_t* szPassword)
    {
    	STARTUPINFO StartupInfo = {0};
    	StartupInfo.cb = sizeof(STARTUPINFO);
    
    	PROCESS_INFORMATION ProcessInformation = {0};
    
    	return	CreateProcessWithLogonW(
    				szUsername,		// Username
    				szDomain,		// Domain
    				szPassword,		// Password
    				LOGON_WITH_PROFILE,	//Logon Flags
    				szPath,			// Application Name
    				szCmd,			// Command Line
    				CREATE_UNICODE_ENVIRONMENT,	// Creation Flags
    				NULL,			// Environment
    				NULL,			// Current Directory
    				&StartupInfo,	// Startup Info
    				&ProcessInformation)// Process Info
    
    				!= NULL;
    }
    

    Gruß
    Fabian



  • Ein Problem gibts noch:

    Ich möchte bei einem eingeschränkten Benutzer ein Programm in den Autostart legen, dass sich selbst als Administrator startet (mit dem obigen Code).

    Unter Windows XP hat das zur Folge, dass der eingeschränkte Benutzer das Programm nicht mehr beenden kann.

    Unter Windows Vista jedoch schon.

    Gibt es dafür eine Lösung? (außer einen Diest :D)

    Gruß
    Fabian



  • Unter Vista kann ein Benutzer mit eingeschränkten Rechten einen Prozess mit höheren Rechten eines anderen Benutzers, zum Beispiel Administrator, beenden? Das halte ich für ein Gerücht.



  • Ja doch "leider" schon.

    Wenn man unter einem eingeschränkten Konto mit dem obignen Code ein neues Programm oder das selbige mit Admin-Rechten startet, kann man es trotzdem beenden als eingeschränkter Benutzer.

    Ich wäre dir verbunden, wenn du es ausprobieren würdest 😉



  • Das scheint tatsächlich zu gehen, auch schon unter XP. Aber wahrscheinlich nur, weil dir der Elternprozess gehört von dem der Admin-Prozess gestartet wurde.



  • _Luckie schrieb:

    Das scheint tatsächlich zu gehen, auch schon unter XP.

    Seltsam..

    _Luckie schrieb:

    Aber wahrscheinlich nur, weil dir der Elternprozess gehört von dem der Admin-Prozess gestartet wurde.

    CREATE_DEFAULT_ERROR_MODE |
    CREATE_NEW_CONSOLE |
    CREATE_NEW_PROCESS_GROUP | <----- Ist das damit nicht ausgeschlossen?
    CREATE_UNICODE_ENVIRONMENT
    

    Ich denke es wird wohl zum neuen Sicherheitskonzept gehören 😕

    Ich versteh's nicht...

    Gruß
    Fabian


Anmelden zum Antworten