![]() |
problem mit createprocesswithlogonW
Hallo Zusammen,
Hab ein Problem mit createprocesswithlogonW er erkennt es nicht hab ich vill ne spezielle uses vergessen, und muss ich immer einen totalen pfad angeben oder reicht zum beispiel auch einfach nur explorer.exe Gruß Manu |
Re: problem mit createprocesswithlogonW
Es kann sein, dass Delohi die Funktion noch nicht kennt.
![]() PS: Eine korrekte Rechtsschreibung, Grammatik und Interpunktion würde es wesentlich vereinfachen deine Beiträge zu lesen und zu verstehen, was du eientlich willst. |
Re: problem mit createprocesswithlogonW
bin leider momentan auf der Arbeit und kann den Link nicht öffnen, weil in der URL "puff" vorkommt.
könnt ihr mir anders behilflich sein ? schonmal vielen Dank Manu |
Re: problem mit createprocesswithlogonW
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal die Demo runtergeladen und hänge sie hier an.
HTH |
Re: problem mit createprocesswithlogonW
Nochmals vielen Dank für den Upload!
Ich Habe mir jetzt was aus der Demo zusammengebastelt, und habe nun folgendes Problem: Wenn ich mich mit meinem regulärem Benutzer aus der Domaine anmelde öffnet er mir den Explorer ohne Probleme, wenn ich aber versuche diesen als Domainadmin aufzurufen passiert nichts und ich schaff es nicht den Fehler zu lokalisieren. Ich hoffe ihr könnt mir weiter helfen hier mein Code
Delphi-Quellcode:
function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: LPWSTR; dwLogonFlags: dword; lpApplicationName,
lpCommandLine: LPWSTR; dwCreationFlags: dword; lpEnvironment: pointer; lpCurrentDirectory: LPWSTR; lpStartupInfo: PStartUpInfoW; lpProcessInfo: PProcessInformation): boolean; stdcall; external 'advapi32.dll'; implementation {$R *.dfm} function CreateProcessAsLogon(const User, PW, Application, CmdLine: WideString): DWORD; var si : TStartupInfoW; pif : TProcessInformation; s : WideString; begin ZeroMemory(@si, sizeof(si)); si.cb := sizeof(si); si.dwFlags := STARTF_USESHOWWINDOW; si.wShowWindow := 1; if CmdLine = '' then s := Application else s := Application + ' "' + CmdLine + '"'; SetLastError(0); CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW), 0, nil, PWideChar(s), CREATE_DEFAULT_ERROR_MODE, nil, nil, @si, @pif); Result := GetLastError; end; procedure TForm5.ComboBox1Select(Sender: TObject); var User : WideString; PW : WideString; err: DWORD; begin User := WideString(form1.Edit1.Text); PW := WideString(form1.Edit2.Text); err := CreateProcessAsLogon(User, PW,stringgrid1.cells[0,combobox1.ItemIndex] , ''); if err <> 0 then ShowMessage(SysErrorMessage(err)); end; Schonmal vieln Dank Gruß Manu |
Re: problem mit createprocesswithlogonW
Und warum verschweigst du nuns den Rückgabewert von GetLastError?
|
Re: problem mit createprocesswithlogonW
momentan noch zur testzwecken aber das war auch nicht so meine frage
|
Re: problem mit createprocesswithlogonW
Zitat:
|
Re: problem mit createprocesswithlogonW
Hallo Manuel,
schau mal im Taskmanager, ob der Explorer nach Aufruf deiner Funktion dort erscheint, aber nach kurzer Zeit wieder verschwindet. Falls ja, starte den Explorer mit folgenden Parametern 'Explorer.exe /e,/separate,c:\' So ein Problem hatte ich damals auch, und habe es auf diese Art gelöst. Uwe |
Re: problem mit createprocesswithlogonW
ja aber wie kann es denn sein das wenn ich als user mich (domainaccount) angebe es dann funzt, und bei dem domainadmin nicht ? ... finde ich seltsam
|
Re: problem mit createprocesswithlogonW
Zitat:
Also ich klinke mich hier aus. Ich bin ja bereit zu helfen, aber ich habe keine Lust um Informationen betteln zu müssen, nur um helfen zu können. |
Re: problem mit createprocesswithlogonW
Ich kann diese Funktion eh nicht empfehlen, da sie eine Menge Probleme hat.
|
Re: problem mit createprocesswithlogonW
Welche würdest du denn für diesen Zweck empfehlen?
|
Re: problem mit createprocesswithlogonW
Ab XP immer LogonUser und CreateProcessAsUser.
|
Re: problem mit createprocesswithlogonW
Warum kannst du sie nicht empfehlen? Deine Methode funktioniert aber unter 200 und NT nicht, da dem Benutzer die nötigen Privilegien fehlen, um LogonUser erfolgreich aufzurufen.
|
Re: problem mit createprocesswithlogonW
Zitat:
es kann durchaus sein, dass er keinen Fehler durch GetLastError erhält, so war es damals bei mir. In unserer Firma gibt es Domain Admins, aber auch Lokale Admins natürlich mit unterschiedlichen Rechten. Jedesmal wenn ich den Explorer über CreateProcessAsLogon gestarte habe, wurde der Explorer in der Tasklist zwar angezeigt, dieser Task wurde allerdings von Windows nach ein paar Sekunden einfach wieder entfernt. Vielleicht liegt es auch an den Policies im Active Directory, bin leider kein Domain Admin. Erst als ich den Explorer in einem separaten Task gestartet habe(daher der Parameter /e,/separate,) funktionierte das starten des Programms problemlos. Das ganze hat allerdings auch einen Nachteil, man muss dieses Explorer Fenstet immer manuell aktualisieren nach kopieren, löschen etc. da es nicht automatisch geschieht. Zitat:
weltweit von den lokalen Admins seit ca. 1,5 Jahren eingesetzt, und ich hatte noch keine negative Resonanz. Uwe |
Re: problem mit createprocesswithlogonW
Zitat:
Zitat:
Zitat:
Dein Programm ist vom sekundären Anmeldedienst abhängig. Ist dieser abgeschaltet, funktioniert die Funktion nicht mehr. Besonders heftig : Wenn man den Dienst abstellt oder er abstürzt, dann werden die damit gestarteten Programme beim Abmelden (lokale Konsole) nicht geschlossen und stehen dem nächsten Benutzer zur Verfügung. |
Re: problem mit createprocesswithlogonW
ich werde es sobald ich wieder gesund und an der Arbeit bin mal ausprobieren ... kann es sein das ich das Problem dann auch mit anderen Programmen bekommen kann z.B. Internet Explorer?
gruß Manuel |
Re: problem mit createprocesswithlogonW
Das Problem existiert immer für alle Programme, die diese Funktion benutzen, z.B. auch für den Kontextmenüeintrag "Ausführen als..." im Explorer. Auch wenn man den Dienst deaktiviert, kann man diesen Menüeintrag nicht mehr verwenden.
Hier die Übersicht, was es für Probs mit CreateProcessWithLogonW gibt:
|
Re: problem mit createprocesswithlogonW
Also... mit den Parametern funktioniert es jetzt trotzdem habe ich nun meine Bedenken bezüglich der von mir gewälten methode und ich werde anfangen es mit CreateProcessAsUser probieren, da wir keine systeme hier haben die älter als XP sind
|
Re: problem mit createprocesswithlogonW
@Dezipaitor:
Könntest du vielleicht mal ein funktionierendes Beispiel für LogonUser & CreateProcessAsUser posten? Alles was ich bisher so gefunden habe scheitert an den fehlenden Rechten. Dürfte für einige Leute sehr interessant sein und wäre mit Sicherheit etwas für die Codelib. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz