AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein ShellExecute, Batch über runas starten

ShellExecute, Batch über runas starten

Ein Thema von waldforest · begonnen am 26. Apr 2016 · letzter Beitrag vom 12. Sep 2016
Antwort Antwort
Seite 2 von 2     12
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#11

AW: ShellExecute, Batch über runas starten

  Alt 11. Sep 2016, 16:38
Hallo,
ist es möglich shellexecute mit runas und den Profildaten eines Admins als Parameter zu übergeben.

Hintergrund: ich habe einen Rechner, der 2 Benutzerprofile besitzt, eines mit Administrationsrecht, das Andere als klassischer Nutzer.
Nun möchte ich vom Nutzer ohne Adminrechte aus meiner Anwendung, ohne jedes mal den Benutzer und das Passwort eingeben zu müssen, über Shellexecute eine Batch starten. Diese soll mit Adminrechte gestartet werden.

Geht dies überhaupt mit shellexecute oder wie kann ich so etwas realisieren ?
mfg wf

Geändert von waldforest (11. Sep 2016 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.944 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: ShellExecute, Batch über runas starten

  Alt 11. Sep 2016, 20:14
Code:
[Win] CMD [Enter] runus [Enter]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#13

AW: ShellExecute, Batch über runas starten

  Alt 12. Sep 2016, 07:45
Hallo,
mir schwebt eher der eine Möglichkeit aus meiner Anwendung heraus vor.
Ich habe da Problem wie folgt gelöst.

Delphi-Quellcode:
function RunAsWithLogon(const User, PW, Application, CmdLine: WideString): DWORD;
var
  si : TStartupInfoW;
  pif : TProcessInformation;
  s : WideString;
begin
  ZeroMemory(@si, sizeof(si));
  si.cb := sizeof(si);
  si.dwFlags := STARTF_USESHOWWINDOW;
  si.wShowWindow := 1;

  if CmdLine = 'then
    s := Application
  else
    s := Application + ' ' + CmdLine;

  SetLastError(0);
  CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW), 0, nil, PWideChar(s), CREATE_DEFAULT_ERROR_MODE, nil,
    nil, @si, @pif);
  Result := GetLastError;
end;
mfg wf
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf