Créer un programme en tenant compte des droits utilisateurs
Créer un programme en tenant compte des droits utilisateurs
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 ?
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 ?
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
non pas forcement ..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 ?
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
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
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
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.
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.
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)
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)
Re: Créer un programme en tenant compte des droits utilisate
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
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
- 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
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
.:NY152:.
Re: Créer un programme en tenant compte des droits utilisate
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
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é.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 ?
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
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.
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.
- TazNormand
- Messages : 1294
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Créer un programme en tenant compte des droits utilisate
@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)