Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
Delphi XE2 Professional
|
Re: CreateProcessAsLogon + Systemtools
27. Mär 2006, 14: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.
|
|
Zitat
|