Gateway_man Geschrieben 5. August 2012 Geschrieben 5. August 2012 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden