Einzelnen Beitrag anzeigen

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