![]() |
CreateProcessAsUser
Hi,
habe so meine Probleme mit der Function CreateProcessAsUser. Will im Prinzip zb. die Registry ändern,Dateien schreiben,ändern in denen User nix machen dürfen und sollen (nur das Tool ). zb. Für Autologin ,usw. Lokalen Admin und PA und Domäne kenne ich. Danke. |
Re: CreateProcessAsUser
Hallo renekr,
wo liegen denn die Probleme, die du mit der Funktion hast? |
Re: CreateProcessAsUser
Hallo,
also beim aufruf: :wall: Ich will im Prinzip nur etwas ausführen als User aber mit Rechte von Admin. Also nicht ein Programm Starten mit Admin Rechten. zb. Autologin Write auf Local MAchine in Registry, oder User auslesen,ändern usw.
Delphi-Quellcode:
Was muss ich dann zb angeben wenn ich eine Funtion ausführen will
CreateProcessAsLogon('Administrator', 'passwort', 'Notepad.exe', 'c:\boot.ini')
Delphi-Quellcode:
Danke.
SetAutoLogin(const Machine, User, PW: string): LongInt;
|
Re: CreateProcessAsUser
Habe ich dir doch schon per PN geschrieben:
![]() |
Re: CreateProcessAsUser
Danke,
habe leider damit noch nix gemacht und Blick nicht so durch. Dem ImpersonateLoggedOnUser muss ich ja ein Access Token mitgeben? muß i dann vorher LogonUser machen? PS: gibt es auch ne möglichkeit ev. das User Passwort zu prüfen ob es ok ist?Also das Windows ( Domänen ) Login Passwort !! Ich will es nicht auslesen nur Checken ob das eingegebene das selbe ist und ein Logon gehn würde. Danke. :gruebel: |
Re: CreateProcessAsUser
Hallo Renekr,
probier mal folgendes:
Delphi-Quellcode:
Das hatte ich mir irgendwann mal zusammengestellt und ich glaube das das auch funktioniert hat. Probiers einfach.
function WinExecAsUser(FileName, Commandline: string; domain:string; username: string; password:string; Visibility:integer; var errormessage:string):boolean;
var StartupInfo : _startupinfow; ProcessInfo : TProcessInformation; h : thandle; vtmp : string; wcurdir, wfilename, wcommandline, wdomain, wusername, wpassword:pwidechar; begin GetStartupInfoW(startupinfo); FillChar(StartupInfo, Sizeof(StartupInfo), #0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Visibility; // if not LogonUser(pchar(username), pchar(domain), pchar(Password),LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT, h) then ShowMessage(SysErrorMessage(GetLastError)); vtmp:=extractfilepath(filename); GetMem( wcurdir, length(vtmp) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; StringToWideChar( vtmp, wcurdir, Length( vtmp ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; commandline:=' '+trim(trim(filename)+' '+trim(commandline)); filename:=''; GetMem( wpassword, length(password) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; GetMem( wusername, length(username) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; GetMem( wdomain, length(domain) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; GetMem( wFileName, length(FileName) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; GetMem( wCommandline, length(Commandline) * SizeOf( WideChar ) + SizeOf(WideChar ) ) ; StringToWideChar( password, wpassword, Length( password ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; StringToWideChar( username, wusername, Length( username ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; StringToWideChar( domain, wdomain, Length( domain ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; StringToWideChar( FileName, wFileName, Length( FileName ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; StringToWideChar( Commandline, wCommandline, Length( Commandline ) * SizeOf(WideChar ) + SizeOf( WideChar ) ) ; result:=false; errormessage:=''; result:=CreateProcessWithLogonW(wusername,wdomain,wpassword,0, nil, wcommandline,0, nil, wcurdir,StartupInfo , ProcessInfo); if result=false then errormessage:=sysErrorMessage(Getlasterror); end; Mfg. |
Re: CreateProcessAsUser
Danke.
Werde ich tun,aber das ist nicht genau das was ich will. Ich will nix öffnen,also keinen Explorer ,Registry usw. Ich will quasi in der Registry einen Wert ändern,löschn das nur mit admin Rechten geht. Aktuell bin ich aber User. oder Die Datei Berechtigungen ändern. Ich kenne aber den Admin und das Passwort. Also nur im Hintergrund. Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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-2025 by Thomas Breitkreuz