IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[FAQ] Exécuter application avec autre login/mot de passe


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut [FAQ] Exécuter application avec autre login/mot de passe
    Je cherche a exécuter une application, en tant qu'administrateur, sur un poste.
    J'ai lu l'article de la FAQ (http://delphi.developpez.com/faq/?pa...cuterentantque), mais il est incomplet.

    - Il manque un paramètre à la fonction :
    procedure runas(sUser, sDomain, sPassword, sExecutable: WideString);
    Mais, ce n'est pas un problème.

    Par contre, la ligne suivante me donne une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function CreateProcessWithLogon; external 'advapi32.dll' name 'CreateProcessWithLogonW';
    La fonction necessite un type de résultat.
    Comment corriger ça ?
    Merci.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Par défaut
    Après plus d'une heure de test, j'ai enfin trouvé

    Le code complet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
      function CreateProcessWithLogonW(
               lpUsername : PWideChar;
               lpDomain : PWideChar;
               lpPassword : PWideChar;
               dwLogonFlags : DWORD;
               lpApplicationName : PWideChar;
               lpCommandLine : PWideChar;
               dwCreationFlags : DWORD;
               lpEnvironment : Pointer;
               lpCurrentDirectory : PWideChar;
               Const lpStartupInfo : TStartupInfo;
               Var lpProcessInfo : TProcessInformation):Bool;stdcall;external 'advapi32.dll';
    const
      LOGON_WITH_PROFILE = 1;
      LOGON_NETCREDENTIALS_ONLY = 2;
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
    procedure runas(sUser, sDomain, sPassword, sExecutable : PWideChar);
    var
      wUsername, wDomain, wPassword, wApplicationName: PWideChar;
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
    begin
      wUsername := sUser ;
      wDomain := sDomain;
      wPassword := Spassword;
      wApplicationName := PWideChar(sExecutable) ;
     
     
      FillChar(StartupInfo, SizeOf(StartupInfo), 0);
      StartupInfo.cb := SizeOf(StartupInfo);
      StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
      StartupInfo.wShowWindow := SW_SHOWNORMAL;
     
      if not CreateProcessWithLogonW(wUsername,nil,wPassword,1,
                                    wApplicationName,nil,CREATE_DEFAULT_ERROR_MODE,
                                    nil,nil,StartupInfo,ProcessInfo) then
        RaiseLastOSError; //En cas d'erreur, donne des détails sur l'erreur
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      runas('Administrateur','','1234','c:\windows\notepad.exe');
    end;
    Si cela marche sans problème sur plusieurs config, il serait bien de remettre à jour cette QR !

  3. #3
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut

    CA MARCHE !!!

    Je l'ai testé sur XP Pro, et 2000 Pro.
    Seul restriction, on ne peut pas donner de chemin réseau, et faut donner un chemin complet. Il ne comprend pas "regedit", par exemple. Faut dire : "C:\Windows\regedit.exe".

    Sinon, effectivement, il faudrait corriger et compléter la FAQ.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/02/2011, 21h19
  2. Réponses: 0
    Dernier message: 12/04/2010, 14h43
  3. [Administration] Connexion avec login mot de passe
    Par yupa dans le forum Subversion
    Réponses: 0
    Dernier message: 29/04/2009, 10h20
  4. login mot de passe avec un web service
    Par friedamichelle dans le forum Services Web
    Réponses: 1
    Dernier message: 29/04/2008, 12h11
  5. Passage de login mot de passe dans l'URL avec IE6 sp2
    Par SPA dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/10/2005, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo