Page 1 sur 2
Créer un programme en tenant compte des droits utilisateurs
Publié : mer. 19/août/2009 9:28
par Patix
Bonjour,
J'espère que je poste au bon endroit pour cette question.
Comment donner des droits d'admin à un prog purebasic ?
Je m'explique. J'ai un prog purebasic qui doit lancer un exe externe mais celui-ci a besoin des droits administrateur. Comment dois je faire pour ne pas rentrer le mdp à chaque fois ?
Publié : mer. 19/août/2009 9:31
par jbernard13
à tout hasard serais tu sous vista???
Publié : mer. 19/août/2009 9:52
par Backup
dans les option du compilateur tu as une option
"Demander le mode Admin sous Vista" , a cocher
ça devrai peut etre sufire non?
Publié : mer. 19/août/2009 11:10
par Patix
Bonjour,
sous xp et vista.
les 2 me posent problème en utilisateur limité.
tout se joue dans la compilation du prog ?
Publié : mer. 19/août/2009 11:21
par Backup
Patix a écrit :Bonjour,
sous xp et vista.
les 2 me posent problème en utilisateur limité.
tout se joue dans la compilation du prog ?
non pas forcement ..
je t'ai parlé d'un parametre se trouvant dns les option de compilation
de ton editeur ....
pour Vista .....
maintenant on aurai peut etre pus mieux t'informer , si tu nous disais quel est le prg que tu modifie , ou quel parametre de windows tu modifie ...
ça aiderai a déterminer pourquoi ça coince ...
c'est évident que le système se défends comme il peux pour éviter que n'importe quel prg modifie n'importe quoi , ç'est la base de la défense
contre un virus ....
mais certains fichiers ne peuvent etre modifiés tant que Windows (ou l'utilisateur) s'en sert....
des fois, il faut attendre que le fichier ne soit plus utilisé (en le fermant par exemple) , pour pouvoir le modifier ...
et pour un fichier systeme :
des fois , il faut préalablement redémarrer , et faire la modif pendant e démarrage , avant que Windows ne Lock le fichier....
voila

Publié : mer. 19/août/2009 15:06
par Patix
Ben en fait l'exe est mysqld.exe.
Donc il est logique que windows sonne une peu. Je veux créer en local un serveur mysql (style easyphp) mais je veux que tout soit gérer par mon prog.
Donc, la question s'est posée. Comment rendre mon prog avec des droits de lancement utilisateur admin que se soit sous xp ou vista.
La solution pourra me servir d'ailleurs pour d'autres applis surement

Publié : mer. 19/août/2009 19:13
par Flype
je comprends ta question, je comprends ton problème
mais je n'ai jamais eu a modifier quoi que ce soit sous Xp ou Vista (ni même sur un Windows Server 2000/3) pour que cela fonctionne.
et que ce soit avec les fonctions natives en ODBC ou que ce soit avec la libmysql.dll depuis PureBasic, pas de souci.
En revanche, peut-être essayes-tu de lancer le serveur MySQL (mysqld) en tant que programme. Vaut mieux dans tous les cas le lancer en tant que service Windows. Va dans les services Windows, si tu as tout installé correctement tu verras le service 'MySQL quelque chose' (chez moi c'est wampmysqld parceque j'ai installer WAMP et non EasyPHP), met le en automatique, et éventuellement dans l'onglet Connexion (sous Vista en tout cas) tu mets l'utilisateur 'Administrateur' et le mot de passe qui va bien, ce devrait être OK.
Publié : jeu. 20/août/2009 8:45
par Patix
Bonjour,
le but pour moi c'est de ne pas avoir à installer easyphp ou autres. Je voudrais créer un programme autonome (purbasic) installable ou j'en ai envie de façon à pouvoir gérer une base mysql de façon locale qui s'installe avec le prog.
Publié : jeu. 20/août/2009 9:33
par Flype
Et donc ? de démarrer mysqld avec RunProgram() par exemple ?
Dans ce cas, il faudrait jouer avec les privilèges.
Un article à ce sujet, utilisant ShellExecute_() à la place de RunProgram :
http://forums.purebasic.com/english/vie ... +privilege
(Pour ce type de besoin, SQLite semble plus adapté malgré tout)
Publié : jeu. 20/août/2009 13:02
par Patix
Bien, je regarde tout cela mais je veux travailler avec mysql, il me parait plus complet pour mes besoins de sécurité.
et cela est aussi un bon exercice

Re: Créer un programme en tenant compte des droits utilisate
Publié : sam. 05/juil./2014 21:34
par NY152
J'ai une fonction faite un peu à l'arrache qui permet de :
- Lancer un programme et d'attendre la fin de son exécution,
- avec les paramètres voulus,
- avec le dossier de travail voulu,
- que le programme soit visible ou non
- de demander ou non l'élévation du programme lancé (même si le programme compilé n'est pas compilé avec les droits admin
Code : Tout sélectionner
Procedure ShellWait(hWnd.i, lpFile.s, lpParameters.s, lpDirectory.s, nShowCmd.i, asAdmin.i)
Protected lpExecInfo.SHELLEXECUTEINFO
Protected Verb.s
lpExecInfo.SHELLEXECUTEINFO
lpExecInfo\cbSize = SizeOf(SHELLEXECUTEINFO)
lpExecInfo\lpFile = @lpFile
lpExecInfo\fMask=#SEE_MASK_DOENVSUBST | #SEE_MASK_NOCLOSEPROCESS | #SEE_MASK_FLAG_NO_UI
lpExecInfo\hwnd = hWnd
If asAdmin = 1
lpExecInfo\lpVerb = @"runas"
Else
lpExecInfo\lpVerb = @""
EndIf
lpExecInfo\lpParameters = @lpParameters
lpExecInfo\lpDirectory = @lpDirectory
If nShowCmd = 1
lpExecInfo\nShow = #SW_SHOW
Else
lpExecInfo\nShow = #SW_HIDE
EndIf
ShellExecuteEx_(@lpExecInfo)
If lpExecInfo\hProcess <> #Null
Select WaitForSingleObject_(lpExecInfo\hProcess, #INFINITE)
Case #WAIT_OBJECT_0
Debug "Fin"
Default
Debug "Erreur Objet non signalé"
EndSelect
CloseHandle_(lpExecInfo\hProcess)
Else
Debug "No run"
EndIf
EndProcedure
La fonction est loin d'être parfaite et je la poste qu'à des fins didactique.
A ceux qui trouve ce code mer...., je les invite à améliorer ce dernier ou à poster leur propre code, c'est plus constructif qu'une critique stérile

Re: Créer un programme en tenant compte des droits utilisate
Publié : dim. 26/juin/2016 20:06
par nico
Il faut penser a traiter les valeurs de retour, dans ton exemple ça donne:
Code : Tout sélectionner
Procedure.l ShellWait(hWnd.i, lpFile.s, lpParameters.s, lpDirectory.s, nShowCmd.l, asAdmin.l)
Protected lpExecInfo.SHELLEXECUTEINFO
Protected Verb.s, Ret.l
lpExecInfo.SHELLEXECUTEINFO
lpExecInfo\cbSize = SizeOf(SHELLEXECUTEINFO)
lpExecInfo\lpFile = @lpFile
lpExecInfo\fMask=#SEE_MASK_DOENVSUBST | #SEE_MASK_NOCLOSEPROCESS | #SEE_MASK_FLAG_NO_UI
lpExecInfo\hwnd = hWnd
If asAdmin = 1
lpExecInfo\lpVerb = @"runas"
Else
lpExecInfo\lpVerb = @"open"
EndIf
lpExecInfo\lpParameters = @lpParameters
lpExecInfo\lpDirectory = @lpDirectory
If nShowCmd = 1
lpExecInfo\nShow = #SW_SHOW
Else
lpExecInfo\nShow = #SW_HIDE
EndIf
ShellExecuteEx_(@lpExecInfo)
If lpExecInfo\hProcess <> #Null
Select WaitForSingleObject_(lpExecInfo\hProcess, #INFINITE)
Case #WAIT_OBJECT_0
Debug "Fin"
Ret = 1
Default
Debug "La fonction a échouée"
Ret = 0
EndSelect
CloseHandle_(lpExecInfo\hProcess)
ProcedureReturn 1
Else
Debug "Erreur exécutable non trouvé"
ProcedureReturn -1
EndIf
EndProcedure
Valeur = ShellWait(0, "notepad.exe", "", "", 1, 0)
If valeur > 0
MessageRequester("Info", "Fin du programme lancé!")
ElseIf valeur = 0
MessageRequester("Erreur", "La fonction a échouée!")
ElseIf valeur = -1
MessageRequester("Erreur", "Exécutable non trouvé!")
EndIf
Re: Créer un programme en tenant compte des droits utilisate
Publié : dim. 26/juin/2016 21:58
par nico
Je m'explique. J'ai un prog purebasic qui doit lancer un exe externe mais celui-ci a besoin des droits administrateur. Comment dois je faire pour ne pas rentrer le mdp à chaque fois ?
J'ai fais une petite recherche, il semble que depuis vista, il ne soit pas possible (a revérifier) de lancer un prog depuis un compte limité même avec le nom du compte et le mot de passe pour des raisons de sécurité.
Cela dit, il doit être possible de le faire en lançant une tâche (je n'ai pas réussi a créer cette tâche avec les comptes admin depuis un compte limité mais ça doit être possible).
Re: Créer un programme en tenant compte des droits utilisate
Publié : dim. 26/juin/2016 23:02
par nico
Il y aurait cette méthode, ici:
http://www.howtogeek.com/124087/how-to- ... nistrator/
En premier, afficher le compte administrateur caché de window, donc depuis un compte admin, on lance une console dos cmd.exe en tant qu'administrateur et on tape :
net user administrateur /Active:yes
Allez dans le gestionnaire de compte pour indiquer un mot de passe pour ce compte portant le nom administrateur qui est apparu (nécessaire).
Ensuite, depuis le compte limité, on crée un raccourci, clic droit, nouveau -> raccourci et on entre par exemple pour lancer le Notepad:
C:\Windows\System32\runas.exe /user:NomDel'ordinateur\Administrateur /savecred "C:\Windows\System32\notepad.exe"
Remplacer NomDel'ordinateur par le vrai nom de l'ordinateur.
Faire suivant, et donner un nom de raccourci.
Au premier lancement, il faudra donner le mot de passe du compte administrateur mais celui-ci sera sauvegardé.
Donc pour les lancements suivants, rien à écrire.
A partir d'un prog, il suffira maintenant de lancer le raccourci.
Re: Créer un programme en tenant compte des droits utilisate
Publié : mar. 28/juin/2016 8:55
par TazNormand
@Nico, je suppose que tu as eu un besoin perso identique pour répondre à ce topic 2 ans après le dernier message (à savoir celui de NY152)