Zum Inhalt springen

[C#] CreateProcessAsUser resultiert in Error 1314


Empfohlene Beiträge

Geschrieben

Hallo,

ich versuche aktuell einen Process zu starten.

Zum test versuche ich es noch garnicht mit einem andereren User Account sondern mit dem Account mit dem ich gerade angemeldet bin.

Jedoch bekomme ich immer den Fehler 1314 zurück.

Ich habe mich jetzt schon durch sehr viele Seiten gewühlt, jedoch stellen fast alle die selbe Frage und das Ende vom Lied ist das sie zu keiner Problemlösung kommen.

Ich hatte gelesen die Meldung wird geworfen wenn irgendwelche Privilegien fehlen.

Was ich bereits versucht habe:

-Das Token mit DuplicateTokenEx zu duplizieren (ich hatte gelesen das die Notwendigen Privilegien dann automatisch gesetzt werden) ==> Resultat: Selbiger Fehler mit dupliziertem Token.

-Dem Token das Notwendige recht selbst zuweisen mit AdjustTokenPrivileges. ==> Resultat: Laut Rückgabewert von AdjustTokenPrivileges hat das geklappt aber ich erhalte immernoch den selben Fehler beim erstellen des Prozesses.

Hier mal die Funktion:


//Die Funktion wird aktuell mit folgenden Parametern aufgerufen.

//username:******

//pwd:******

//domain:"."

//executeable:@"C:\Windows\System32\cmd.exe"

//parameter: string.Empty

        public static bool RunAs(string username, string pwd, string domain, string executeable, string parameter) 

        {

            int lastError = 0;

            if (string.IsNullOrEmpty(executeable) || !System.IO.File.Exists(executeable))

                return false;

            NativeStructures.PROCESS_INFORMATION pi = new NativeStructures.PROCESS_INFORMATION();

            NativeStructures.STARTUPINFO si = new NativeStructures.STARTUPINFO();

            System.IntPtr hToken;


            // Initialize structs

            si.cb = Marshal.SizeOf(si);


            // Get the user token

            if (LogonUser(username, (string.IsNullOrEmpty(domain)) ? (".") : (domain),pwd, (int)NativeStructures.LOGON_TYPE.LOGON32_LOGON_BATCH, (int)NativeStructures.LOGON_PROVIDER.LOGON32_PROVIDER_DEFAULT, out hToken))

            {

                // Create structs

                //IntPtr dublicatedToken = IntPtr.Zero;

                //NativeStructures.SECURITY_ATTRIBUTES sAttr = new NativeStructures.SECURITY_ATTRIBUTES();

                //if (!DuplicateTokenEx(hToken, 0x02000000, ref sAttr, NativeStructures.SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous, NativeStructures.TOKEN_TYPE.TokenPrimary, out dublicatedToken)) 

                //{

                //    KERNEL32.CloseHandle(hToken);

                //}

                NativeStructures.TOKEN_PRIVILEGES tp = new NativeStructures.TOKEN_PRIVILEGES();

                tp.PrivilegeCount = 1;

                tp.Attributes = NativeStructures.SE_PRIVILEGE_ENABLED;

                bool btemp = false;

                btemp = AdjustTokenPrivileges(hToken, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);


                NativeStructures.SECURITY_ATTRIBUTES saProcessAttributes = new NativeStructures.SECURITY_ATTRIBUTES();

                NativeStructures.SECURITY_ATTRIBUTES saThreadAttributes = new NativeStructures.SECURITY_ATTRIBUTES();

                // Now create the process as the user

                if (!CreateProcessAsUser(hToken, executeable, parameter,

                ref saProcessAttributes, ref saThreadAttributes, false, (int)NativeStructures.dwCreationFlags.NORMAL_PRIORITY_CLASS ,  IntPtr.Zero,  System.IO.Path.GetDirectoryName(executeable), ref si, out pi))

                {

                    lastError = KERNEL32.GetLastWin32Error();

                    KERNEL32.CloseHandle(hToken);


                    throw new Exception("Failed to CreateProcessAsUser");

                }

                KERNEL32.CloseHandle(hToken);

            }

            lastError = KERNEL32.GetLastWin32Error();

            return true;

        }

Mit dem Fehler scheinen wohl viele schon bekanntschaft gemacht zu haben.

Ich finde sehr viele Posts wie meinen, aber keinen Lösungsweg :(.

Lg

Gateway

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...