![]() |
CreateProcessAsLogon + Systemtools
Hi,
ich habe 2 kleine Frage. Irgendwie schaffe ich es nicht ganz. Ich rufe mit anderen UserRechten das Control Panel auf bzw. die Services auf. Die Umsetzung mit den UserRechten ist OK bloß der Syntax für den Aufruf stimmt nicht ganz. Wie realisiere ich: 1. Control Panel mit Software Eigenschaften:
Delphi-Quellcode:
geht nur bis in die Control Panel Ansicht und nicht weiter
procedure Tfrm_main.btn_softwareClick(Sender: TObject);
var app, param : string; begin app := PJSysInfo1.SystemFolder+'\control.exe'; param := 'appwiz.cpl'; If not CreateProcessAsLogon(frm_login.edt_username.Text,frm_login.edt_password.Text,frm_login.cb_domain.Text, app, param) then RaiseLastOSError; end; 2. Aufruf *.MSC Dateien mit CreateProcessAsLogon
Delphi-Quellcode:
Bring SystemFehlermeldung: System ERROR Code:193
procedure Tfrm_main.btn_computermmClick(Sender: TObject);
var app, param : string; begin app := PJSysInfo1.SystemFolder+'\Compmgmt.msc'; param := ''; If not CreateProcessAsLogon(frm_login.edt_username.Text,frm_login.edt_password.Text,frm_login.cb_domain.Text, app, param) then RaiseLastOSError; end; CreateProcessAsLogon Function:
Delphi-Quellcode:
Wo liegt denn der Fehler? ich hoffe mir kann einer helfen. Danke
function CreateProcessAsLogon(const User, PW, Domain, Application, CmdLine: WideString):
Boolean; var si : TStartupInfoW; pif : TProcessInformation; begin ZeroMemory(@si, sizeof(TStartupInfo)); si.cb := SizeOf(TStartupInfoW); si.dwFlags := STARTF_USESHOWWINDOW; si.wShowWindow := 1; Result := CreateProcessWithLogonW(PWideChar(User), PWideChar(Domain), PWideChar(PW), LOGON_WITH_PROFILE, PWideChar(Application), PWideChar(CmdLine), CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif); end; |
Re: CreateProcessAsLogon + Systemtools
1. normal startet man das Softwarepanel direkt so
RunDll32.exe Shell32.dll,Control_RunDLL Appwiz.cpl,,0 2. probier es mal so: mmc.exe /s compmgmt.msc Darf ich mal fragen, was genau du da programmierst? Wenn es das ist was ich denke, dann machen wir dasselbe. In diesem Fall sollten wir uns mal "zusammensetzen". |
Re: CreateProcessAsLogon + Systemtools
hat dir meine Antwort etwas gebracht?
|
Re: CreateProcessAsLogon + Systemtools
Hi,
sorry für meine verspätete Antwort. Habe gerade kein Internet zu Hause, nur in der Firma. Es hat mir etwas gebracht. Die Tipps waren gut. Mein Tool soll ein AdminTool unter WinXP werden. Da unsere Admins auf die Clients müssen, welche keine lokalen AdminRechte mehr haben. Mit diesem Tool will ich das ständige lästige RunAS umgehen. Ein Problem habe ich immer noch. Wenn du den Explorer mit AdminRechten öffnest, bringt dir das gar nichts weil die Programme, die dann aufrufen willst wieder als normaler User ohne Rechte ausgeführt werden. Idee? Was für ein Tool baust du denn? |
Re: CreateProcessAsLogon + Systemtools
ja du musst dich in jeden PC als Administrator einloggen,
einen Explorer öffnen und im Menü Extras - Ordneroptionen im Reiter Ansicht den Punkt mit "Ordnerfenster in einem eigenen Prozess starten" anwählen. Nur mit dieser Einstellung kann man den Explorer als Admin starten. |
Re: CreateProcessAsLogon + Systemtools
Ja das ist richtig aber auch lästig. Weiß noch nicht wie ich das automatisiere und im Hintergrund setze. Habe die richtige Stelle noch nicht gefunden.
Trotzdem, wenn du den Explorer mit Adminrechten startest, werden die zu installierende Programm nicht mit Adminrechten gestartet. Und das ist unpraktisch. Denn dann kann ich mir diese Console ersparen und glaich auf die Datei ein RUNAS machen. |
Re: CreateProcessAsLogon + Systemtools
Zitat:
Also der ist dort: HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Explorer\Advanced\SeparateProcess Jedoch musst du den HKEY_CURRENT_USER-Zweig für den Admin verwenden! Zitat:
Doch werden sie. Ich mache das schon seit langem so. Es gibt einige Programme, die können dir sagen, unter welchem Benutzer ein Programm läuft. Vermutlich liegt es an der obigen Einstellung. Ich habe mein Adminaccount mit Sounds versehen, so dass ich hören kann, wenn ich in einem AdminExplorer arbeite. Das wechseln eines Ordners klickt dann immer hörbar. Als Ausweg kannst du ja Speedcommander oder TotalCommander als Admin starten. Diese sind wie der Explorer nur besser :) ![]() |
Re: CreateProcessAsLogon + Systemtools
Nettes Tool bastels di da. Also es funktioniert jetzt bei mir. Am Anfang jedes Einloggen setze ich den Paramter für den SeparatenProzess.
Ich habe nur noch ein paar kleine Probleme. Wenn ich das Control Panel öffne, erscheint nur der Explorer. Warum? Siehe Function:
Delphi-Quellcode:
Bei diesem Aufruf erscheint nur der Explorer. Das Ganze passiert auch mit den Netzwerkeinstellungen.
function CreateProcessAsLogon(const User, PW, Domain, Application, CmdLine: WideString):
Boolean; var si : TStartupInfoW; pif : TProcessInformation; begin ZeroMemory(@si, sizeof(si)); si.cb := SizeOf(si); si.dwFlags := STARTF_USESHOWWINDOW; si.wShowWindow := 1; SetLastError(0); {Wenn der CmdLine Parameter mit der Application verwendet wird, denn Application Parameter auf nil setzen und die Applicationn mit dem Parameter im 2. Parameter zusammenbauen} Result := CreateProcessWithLogonW(PWideChar(User), PWideChar(Domain), PWideChar(PW), {LOGON_WITH_PROFILE or LOGON_NETCREDENTIALS_ONLY} LOGON_WITH_PROFILE, nil, PWideChar(Application +' '+CmdLine), CREATE_DEFAULT_ERROR_MODE, nil, nil, si, pif); end; ... procedure Tfrm_main.cmd_controlpanelClick(Sender: TObject); var app, param : string; begin app := PJSysInfo1.SystemFolder+'\rundll32.exe'; param := 'shell32.dll,Control_RunDLL'; If not CreateProcessAsLogon(frm_login.edt_username.Text,frm_login.edt_password.Text,frm_login.cb_domain.Text, app, param) then RaiseLastOSError; end; |
Re: CreateProcessAsLogon + Systemtools
so
param := 'shell32.dll,Control_RunDLL Appwiz.cpl,,0'; ? |
Re: CreateProcessAsLogon + Systemtools
Danke aber dem Parameter öffne ich die Software Settings. Ich brauche aber das Control Panel und die Netzwerk Settings.
Control Panel:
Delphi-Quellcode:
NetzwerkSettings:
app := PJSysInfo1.SystemFolder+'\rundll32.exe';
param := 'shell32.dll,Control_RunDLL'; ...
Delphi-Quellcode:
Unter Windows 2000 Professional funktioniert das alles aber nicht unter WinXP. Warum?
app := PJSysInfo1.SystemFolder+'\rundll32.exe';
param := 'shell32.dll,Control_RunDLL ncpa.cpl'; ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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