AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CreateProcessAsLogon + Systemtools
Thema durchsuchen
Ansicht
Themen-Optionen

CreateProcessAsLogon + Systemtools

Ein Thema von Piro · begonnen am 21. Mär 2006 · letzter Beitrag vom 28. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

CreateProcessAsLogon + Systemtools

  Alt 21. Mär 2006, 14:13
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:
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;
geht nur bis in die Control Panel Ansicht und nicht weiter

2. Aufruf *.MSC Dateien mit CreateProcessAsLogon
Delphi-Quellcode:
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;
Bring SystemFehlermeldung: System ERROR Code:193

CreateProcessAsLogon Function:
Delphi-Quellcode:
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;
Wo liegt denn der Fehler? ich hoffe mir kann einer helfen. Danke
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: CreateProcessAsLogon + Systemtools

  Alt 21. Mär 2006, 22:33
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".
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#3

Re: CreateProcessAsLogon + Systemtools

  Alt 24. Mär 2006, 14:11
hat dir meine Antwort etwas gebracht?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#4

Re: CreateProcessAsLogon + Systemtools

  Alt 25. Mär 2006, 08:45
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?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: CreateProcessAsLogon + Systemtools

  Alt 25. Mär 2006, 10:55
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#6

Re: CreateProcessAsLogon + Systemtools

  Alt 25. Mär 2006, 11:11
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.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

Re: CreateProcessAsLogon + Systemtools

  Alt 25. Mär 2006, 12:32
Zitat von daywalker299:
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.
Du meinst, wo diese Einstellung mit "Ordnerfenster als eigener Prozess starten" in der Registrierung versteckt ist?
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:
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.

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


Hier ist ein Überblick was ich gemacht habe
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#8

Re: CreateProcessAsLogon + Systemtools

  Alt 27. Mär 2006, 13:04
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:
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;
Bei diesem Aufruf erscheint nur der Explorer. Das Ganze passiert auch mit den Netzwerkeinstellungen.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#9

Re: CreateProcessAsLogon + Systemtools

  Alt 27. Mär 2006, 17:50
so

param := 'shell32.dll,Control_RunDLL Appwiz.cpl,,0';

?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#10

Re: CreateProcessAsLogon + Systemtools

  Alt 28. Mär 2006, 08:56
Danke aber dem Parameter öffne ich die Software Settings. Ich brauche aber das Control Panel und die Netzwerk Settings.

Control Panel:
Delphi-Quellcode:
app := PJSysInfo1.SystemFolder+'\rundll32.exe';
param := 'shell32.dll,Control_RunDLL';
...
NetzwerkSettings:
Delphi-Quellcode:
app := PJSysInfo1.SystemFolder+'\rundll32.exe';
param := 'shell32.dll,Control_RunDLL ncpa.cpl';
...
Unter Windows 2000 Professional funktioniert das alles aber nicht unter WinXP. Warum?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz