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 :-o

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 8)

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)