begin process at 2012 02 12 19:34:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > EXECUTER EN TANT QUE... DE MANIÈRE TRANSPARENTE POUR L'UTILISATEUR

EXECUTER EN TANT QUE... DE MANIÈRE TRANSPARENTE POUR L'UTILISATEUR


 Information sur la source

Note :
7 / 10 - par 4 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :executerentantque, impersonation, user, executeas Niveau :Débutant Date de création :20/06/2003 Date de mise à jour :14/08/2003 11:44:11 Vu :9 414

Auteur : Vince2kz

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Ca permet à un utilisateur avec un compte limité de pouvoir lancer un programme qui demande d'avoir des droits d'administrateur sans que celui ci n'ait à taper le mot de passe.
Par exemple, il est impossible de lancer Half Life sur un compte limité, on doit faire Executer en tant que et taper le mot de passe à chaque fois.

Voilà la solution:

Source

  • Créer un module genre module1.bas:
  • Private Const SW_SHOWNORMAL = 1
  • Private Const LOGON_WITH_PROFILE = &H1&
  • Private Const LOGON_NETCREDENTIALS_ONLY = &H2&
  • Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000
  • Private Const CREATE_NEW_CONSOLE = &H10&
  • Private Const CREATE_NEW_PROCESS_GROUP = &H200&
  • Private Const CREATE_SEPARATE_WOW_VDM = &H800&
  • Private Const CREATE_SUSPENDED = &H4&
  • Private Const CREATE_UNICODE_ENVIRONMENT = &H400&
  • Private Const ABOVE_NORMAL_PRIORITY_CLASS = &H8000&
  • Private Const BELOW_NORMAL_PRIORITY_CLASS = &H4000&
  • Private Const HIGH_PRIORITY_CLASS = &H80&
  • Private Const IDLE_PRIORITY_CLASS = &H40&
  • Private Const NORMAL_PRIORITY_CLASS = &H20&
  • Private Const REALTIME_PRIORITY_CLASS = &H100&
  • Public Type STARTUPINFO
  • cb As Long
  • lpReserved As String
  • lpDesktop As String
  • lpTitle As String
  • dwX As Long
  • dwY As Long
  • dwXSize As Long
  • dwYSize As Long
  • dwXCountChars As Long
  • dwYCountChars As Long
  • dwFillAttribute As Long
  • dwFlags As Long
  • wShowWindow As Integer
  • cbReserved2 As Integer
  • lpReserved2 As Long
  • hStdInput As Long
  • hStdOutput As Long
  • hStdError As Long
  • End Type
  • Public Type PROCESS_INFORMATION
  • hProcess As Long
  • hThread As Long
  • dwProcessID As Long
  • dwThreadID As Long
  • End Type
  • Declare Function CreateProcessWithLogon Lib "Advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long
  • Puis dans votre Form1:
  • Private Sub Form_Load()
  • Dim Startup As STARTUPINFO
  • Dim ProcessInf As PROCESS_INFORMATION
  • Dim return_value As Long
  • Dim app_to_run As String
  • Startup.cb = Len(Startup)
  • lpDomain = "." 'C'est ce qu'il faut mettre pour XP
  • app_to_run = "c:\Sierra\Half-Life\hl.exe" 'On veut lancer Half life par exemple
  • lpCommandLine = vbNullString
  • lpCurrentDirectory = vbNullString
  • Login = "Login" 'Nom du compte sur lequel on veut se logger
  • Pass = "Password" 'Mot de passe pour ce compte
  • return_value = CreateProcessWithLogon(StrPtr(Login), StrPtr(lpDomain), StrPtr(Pass), LOGON_WITH_PROFILE, StrPtr(app_to_run), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE, ByVal 0&, StrPtr(lpCurrentDirectory), Startup, ProcessInf)
  • End Sub
Créer un module genre module1.bas:

Private Const SW_SHOWNORMAL = 1
Private Const LOGON_WITH_PROFILE = &H1&
Private Const LOGON_NETCREDENTIALS_ONLY = &H2&
Private Const CREATE_DEFAULT_ERROR_MODE = &H4000000
Private Const CREATE_NEW_CONSOLE = &H10&
Private Const CREATE_NEW_PROCESS_GROUP = &H200&
Private Const CREATE_SEPARATE_WOW_VDM = &H800&
Private Const CREATE_SUSPENDED = &H4&
Private Const CREATE_UNICODE_ENVIRONMENT = &H400&
Private Const ABOVE_NORMAL_PRIORITY_CLASS = &H8000&
Private Const BELOW_NORMAL_PRIORITY_CLASS = &H4000&
Private Const HIGH_PRIORITY_CLASS = &H80&
Private Const IDLE_PRIORITY_CLASS = &H40&
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const REALTIME_PRIORITY_CLASS = &H100&

Public Type STARTUPINFO
   cb As Long
   lpReserved As String
   lpDesktop As String
   lpTitle As String
   dwX As Long
   dwY As Long
   dwXSize As Long
   dwYSize As Long
   dwXCountChars As Long
   dwYCountChars As Long
   dwFillAttribute As Long
   dwFlags As Long
   wShowWindow As Integer
   cbReserved2 As Integer
   lpReserved2 As Long
   hStdInput As Long
   hStdOutput As Long
   hStdError As Long
End Type

Public Type PROCESS_INFORMATION
   hProcess As Long
   hThread As Long
   dwProcessID As Long
   dwThreadID As Long
End Type

Declare Function CreateProcessWithLogon Lib "Advapi32" Alias "CreateProcessWithLogonW" (ByVal lpUsername As Long, ByVal lpDomain As Long, ByVal lpPassword As Long, ByVal dwLogonFlags As Long, ByVal lpApplicationName As Long, ByVal lpCommandLine As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, lpStartupInfo As STARTUPINFO, lpProcessInfo As PROCESS_INFORMATION) As Long



Puis dans votre Form1:

Private Sub Form_Load()

Dim Startup As STARTUPINFO
Dim ProcessInf As PROCESS_INFORMATION
Dim return_value As Long
Dim app_to_run As String
Startup.cb = Len(Startup)
lpDomain = "."  'C'est ce qu'il faut mettre pour XP
app_to_run = "c:\Sierra\Half-Life\hl.exe" 'On veut lancer Half life par exemple
lpCommandLine = vbNullString
lpCurrentDirectory = vbNullString
Login = "Login"    'Nom du compte sur lequel on veut se logger
Pass = "Password"   'Mot de passe pour ce compte

return_value = CreateProcessWithLogon(StrPtr(Login), StrPtr(lpDomain), StrPtr(Pass), LOGON_WITH_PROFILE, StrPtr(app_to_run), StrPtr(lpCommandLine), CREATE_DEFAULT_ERROR_MODE, ByVal 0&, StrPtr(lpCurrentDirectory), Startup, ProcessInf)

End Sub
 

 Conclusion

Vous pouvez mettre form1.visible à false et l'utilisateur aura l'impression d'avoir cliqué sur un simple raccourci  


 Sources du même auteur

Source avec Zip EXECUTER EN TANT QUE..., GESTION DES PROGRAMMES NÉCESSITANT ...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

 Sources en rapport avec celle ci

Source avec Zip OCX JOURNÉES MONDIALES par chaibat05
Source avec Zip Source avec une capture USERCONTROL RICHTEXTBOX CORRECTEUR D'ORTHOGRAPHE par jack
Source avec Zip RECHERCHE D'UN UTILISATEUR SUR RESEAU par Korn_Deftones

Commentaires et avis

Commentaire de jeff007 le 20/06/2003 11:56:39

Salut,
Je suis très intéressé par ton sources, pourtant, il y manque quelques trucs - les déclarations ds constantes par exemple (de LOGON_WITH_PROFILE) ...
Sur le site http://www.bozena.net/wins/wins136.htm l'exemple marche bien.
Je te remercie pour ton source !!! C'est Excellent !!!
Je faisais des commandes du ressource Kit - et mes trucs étaient franchement nazes.
Merci encore !

Commentaire de mrpheus le 19/09/2003 18:45:50

Genial, je cherchais ca depuis un bout de temp,

Merci je vais tester ca

Commentaire de nicknick le 20/10/2003 15:53:47

Salut,


Le code ne semble pas fonctionner sous windows 2000.
Message "*.exe a généré des erreurs et sera fermé pas windows...".
Quelqu'un aurait il une idée?

Merci d'avance.

Commentaire de chibro le 25/03/2004 14:21:10

Salut
je gère une petite salle info communale et ce prog m'interesse beaucoup pour jouer à cs le probleme c que je n'ai pas de notion de programmation alors si quelqu'un pouvait m'expliquer ce qu'il faut faire pour que ça marche ou m'envoyer carrement le prog fini ce serait génial
merci d'avance

Commentaire de DarkSun le 15/02/2005 10:03:31

en effet cela ne fonctionne pas sur windows 2000, pour que ca marche sur XP et 2000, mettre :

Public Type STARTUPINFO
     cb As Long
     lpReserved As Long ' must be Long for Unicode string
     lpDesktop As Long  '  must be Long for Unicode string
     lpTitle As Long    ' must be Long for Unicode string
     dwX As Long
     dwY As Long
     dwXSize As Long
     dwYSize As Long
     dwXCountChars As Long
     dwYCountChars As Long
     dwFillAttribute As Long
     dwFlags As Long
     wShowWindow As Integer
     cbReserved2 As Integer
     lpReserved2 As Long
     hStdInput As Long
     hStdOutput As Long
     hStdError As Long
End Type

voila :)

Commentaire de DarkSun le 15/02/2005 10:07:04

ah oui aussi, jeff007, les declarations de constantes genre LOGON_WITH_PROFILE ne manquent pas, il faut juste mettre public a la place de private...;)

Commentaire de Douns le 22/02/2006 09:56:40

Bonjour,

Petite question et si on veut passer quelques chose en ligne de commande? Je suppose qu'il suffit de remplir lpCommandLine par notre commande.
Mais après plusieurs essais, cela ne fonctionne pas. J'ai même essayé de passer la ligne de commande dans app_to_run ("mon_appli.exe" /i).
Quelqu'un pourrait il m'aider?

Commentaire de regisgb le 29/03/2006 17:10:53

Ajoute un espace devant. Exemple : lpCommandLine = " /TOTO"

Commentaire de eliam77 le 18/04/2007 12:51:08

vous avez la meme chose pour visual basic 2005 a tout hazard ? :)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

urgent: utilisation d'une fonction d'une dll ecrite en C dans un programme VB [ par gep ] je suis en train de développeer un application pour permettre une installation facilitée de fichier palm pilote a partir du webpour obtenir les inform Trouver le(s) groupe(s) NT d'un User [ par cgui ] Existe t'il une API ou autres me permettant de retrouver à quel groupe NT appartient un user que l'on passe en paramètre ? Je voudrais un peu d'aide...(LISTE DE USER SUR CHANNEL IRC) [ par KL ] Voilà, je fais un client IRC en VB avec Winsock, mais la.....heu, j'ai pb pour extraire les noms des users présents sur un Channel...Bon, ben merci. ADOX [ par Evangelion ] Quand je veux utiliser les propriétés ou les méthodes ADOX (User.Append, User.ChangePassword...), je recoit un message d'erreur indiquant que ces fonc User Account [ par djh3o ] Comment lancer la fenetre windows de gestion d'utilisateur reseau comme il est accessible a partir des outils d'administration d'un Win NT ou 2000 (ou ADD USER DANS WIN 2K [ par Nicky ] S'est pour savoir si y a moyen avec des api's d'ajouter automatiquement une list d'user sous win2000.Et si oui quelles sont ces api's et comment ca fo Récupérer le User NT [ par rst ] Question toute bête :Comment puis-je faire pour récupérer le login d'un user connecté à un serveur NT pour le réutiliser dans mon application (je n'ai heu help :)! svp sur les datagrid [ par Angelus ] salut!alors j'ai une grid contenant les données d'une table, sur 3 colonnes, avec selection de la ligne entière par l'user.j'ai ma form1 sur laquelle User actif ds windows xp... [ par Pof ] j'aimerais savoir comment faire pour faire une fonction que quand je l'appelle, elle me retourne le nom de l'user actif... en fait, ds windows xp, on Copie de fichier via réseau avec User et Mot de passe [ par DavidT ] J'ai créé une application de Backup qui me permet de copie et de compresser un ensemble de fichiers et les place sur un serveur.Pour cela, j'ai du met


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,591 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales