[resolu]Mettre le programme au démarrage de Windows (avec le registre)
Dernière réponse : dans Programmation
Bonjour, a tous et à toutes.
J'ai un probleme, pour mettre mon programme au démarrage pour XP ET Vista.
Sous XP, aucun probleme. Je crée un programme tout simple qui éxecute le vrai (avec start) dans Programmes > Démarrage.
Mais pour Vista j'ai beau le mettre dans "C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Démarrage", mais là il me vré un autre dossié Démarrage !!!! (Il y a deux dossier au meme emplacement qui ont le même nom !) mais au démarrage il ne le prend pas en compte.
Donc j'ai pensé au Registre mais je ne sais pas comment m'en servir avec regedit alors je vous dis pas ce que ça donne en C.
Donc si il y en a qui savent comment ajouter au registre un programme au démarrage de windows, n'hésitez pas !
EDIT: Maintenant je sais comment faire avec regedit (http://www.commentcamarche.net/faq/sujet-10341-lancer-un-programme-au-demarrage-via-la-base-de-registre) mais en C ...
Merci !
J'ai un probleme, pour mettre mon programme au démarrage pour XP ET Vista.
Sous XP, aucun probleme. Je crée un programme tout simple qui éxecute le vrai (avec start) dans Programmes > Démarrage.
Mais pour Vista j'ai beau le mettre dans "C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Démarrage", mais là il me vré un autre dossié Démarrage !!!! (Il y a deux dossier au meme emplacement qui ont le même nom !) mais au démarrage il ne le prend pas en compte.
Donc j'ai pensé au Registre mais je ne sais pas comment m'en servir avec regedit alors je vous dis pas ce que ça donne en C.
Donc si il y en a qui savent comment ajouter au registre un programme au démarrage de windows, n'hésitez pas !
EDIT: Maintenant je sais comment faire avec regedit (http://www.commentcamarche.net/faq/sujet-10341-lancer-un-programme-au-demarrage-via-la-base-de-registre) mais en C ...
Merci !
Autres pages sur : resolu mettre programme demarrage windows registre
Lassé par la pub ? Créez un compte
RESOLU !
Avec MS-DOS, (pour ceux qui veulent savoir) il faut mettre:
(code non testé)
voila !
Avec MS-DOS, (pour ceux qui veulent savoir) il faut mettre:
system("REG ADD HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v BlocNote /t REG_SZ /d c:\\WINDOWS\\System32\\notepad.exe"); /* Ca va mettre le bloc note au démarrage: /v Nom /t Type /d Donné /*
(code non testé)
voila !
ptitcois a dit :
Oui, mais moi je parle en C avec la fonction system()je ne parlais pas de ne pas doubler le \, j'avais pas vu ton message après ton édition, tu avais mis des / au lieu de \
ptitcois a dit :
@jerbe: désolé mais je trouve plus simple de passer par MS-DOS
(il faut arreter de parler de ms-dos la ou il n'y en a pas
)
bah, de toute facon, le sujet est clos si j'ai bien suivi
ce n'est pas sur l'utilisation ou non des commandes et interruptions héritées de msdos que je parle, c'est le fait que msdos est un système d'exploitation qui n'existe plus, dans le sens ou win xp ne fait qu'émuler (notamment l'int 21h) de ms dos pour ce qui lui est propre et les commandes portant le même noms sont des réécritures.
ca me gène pas plus que ca, mais je pense que c'est une incompréhension (par exemple le fait que ptitcois parle de "commandes msdos") qui mérite d'etre corrigée.
je trouve que c'est comparable à dire que j'utilise msdos si je lance un "cd" sous un shell linux
ce n'est pas sur l'utilisation ou non des commandes et interruptions héritées de msdos que je parle, c'est le fait que msdos est un système d'exploitation qui n'existe plus, dans le sens ou win xp ne fait qu'émuler (notamment l'int 21h) de ms dos pour ce qui lui est propre et les commandes portant le même noms sont des réécritures.
ca me gène pas plus que ca, mais je pense que c'est une incompréhension (par exemple le fait que ptitcois parle de "commandes msdos") qui mérite d'etre corrigée.
je trouve que c'est comparable à dire que j'utilise msdos si je lance un "cd" sous un shell linux
Concernant l'interruption 21h, ça a toujours été une interruption logicielle, et ça le restera. Donc, la couche la plus basse du DOS est toujours la même.
Ce qui change c'est la couche juste au dessus (le noyau NT) qui est effectivement est la majeure partie de l'OS.
L'interpréteur de commande de windows n'est aussi qu'une évolution de l'interpréteur de commandes de MS-DOS.
Effectivement comme tu le dis, le MS-DOS était un OS, et on confondait facilement l'interpréteur de commandes avec l'OS, comme aujourd'hui on confond l'OS windows avec l'environnement graphique.
Ce qui change c'est la couche juste au dessus (le noyau NT) qui est effectivement est la majeure partie de l'OS.
L'interpréteur de commande de windows n'est aussi qu'une évolution de l'interpréteur de commandes de MS-DOS.
Effectivement comme tu le dis, le MS-DOS était un OS, et on confondait facilement l'interpréteur de commandes avec l'OS, comme aujourd'hui on confond l'OS windows avec l'environnement graphique.
CRicky a dit :
Concernant l'interruption 21h, ça a toujours été une interruption logicielle, et ça le restera. Donc, la couche la plus basse du DOS est toujours la même.
je te l'accorde volontiers, je m'y connais pas tellement pour ce qui touche l'assembleur et cie, tout au plus des essais de redémarrage de pc et un pauvre programme à l'époque où il fallait attendre le rafraîchissement de l'écran pour changer d'image, et encore, il était pompé d'un bouquin
toujours est il qu'on est d'accord sur le fond:
CRicky a dit :
Effectivement comme tu le dis, le MS-DOS était un OS, et on confondait facilement l'interpréteur de commandes avec l'OS, comme aujourd'hui on confond l'OS windows avec l'environnement graphique.
mais bon tout ca, c'est la faute à bill, il aurait mis un autre fond, une autre invite et appelé son système d'un autre nom que le logiciel...
bon désolé je me recorrige:
@jerbe: désolé mais je trouve plus simple de passer par [des commandes de Microsoft (R) (TM) (C All rights reserved 1980 - 2008) Windows (R) .....]
content ?
désolé pour les dates dus copyright de MS je connais pas
.
@Cricky: oui, je sais, mais j'étais pressé et je trouvait la commande Microsoft (r) ..... plus simple.
Mais je vais voir de plus près la fonction prévu pour le C.
@jerbe: désolé mais je trouve plus simple de passer par [des commandes de Microsoft (R) (TM) (C All rights reserved 1980 - 2008) Windows (R) .....]
content ?
désolé pour les dates dus copyright de MS je connais pas
.@Cricky: oui, je sais, mais j'étais pressé et je trouvait la commande Microsoft (r) ..... plus simple.
Mais je vais voir de plus près la fonction prévu pour le C.
ptitcois a dit :
bon désolé je me recorrige:@jerbe: désolé mais je trouve plus simple de passer par [des commandes de Microsoft (R) (TM) (C All rights reserved 1980 - 2008) Windows (R) .....]
content ?
désolé pour les dates dus copyright de MS je connais pas
en fait, ca me fait ni chaud ni froid, ce n'était rien d'autre qu'une remarque (on en a encore le droit?), mais tu peux continuer à appeler une cuillère, fourchette, ca ne me dérange pas du tout
ptitcois a dit :
mais si je met une chaine de caractere dans un DWORD DWORD Etat;
et si je mets: Etat = "C:\\JeSaisPasQuoi";
je penses qu'il ne va pas accepterSi je me trompe, tu peux faire un Exemple avec un SZ
EDIT, eh oui:
http://ptitcois35.free.fr/screenshoots/dword.png
tu essaies d'assigner une chaine de caractères (donc un pointeur char *) sur une valeur DWORD.
Un pointeur étant une adresse mémoire codée sur 4 octets, comme le DWORD, la conversion est théoriquement possible, mais Etat ne contient pas la chaine, mais l'adresse où est écrite la chaine. La norme ansi C suggère (en annexe) aux compilateurs de mettre un warning, car il est plus probable que ce soit une erreur de programmation (ce qui est le cas ici).
Bon, comme tu m'as l'aire relativement paumé je te remet un autre exemple plus simple avec une valeur string
(j'ai ouvert la clef en ALL_ACCESS : donc lecture, écriture)
Plus d'info ici : http://msdn.microsoft.com/en-us/library/ms724923(VS.85).aspx
HKEY hKey; char valeur[99] = "abcdef"; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services\\Cdrom", 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { if(RegSetValueEx(hKey, "AutoRun", 0, REG_SZ, valeur, lstrlen(valeur)) == ERROR_SUCCESS) RegCloseKey(hKey); }
(j'ai ouvert la clef en ALL_ACCESS : donc lecture, écriture)
Plus d'info ici : http://msdn.microsoft.com/en-us/library/ms724923(VS.85).aspx
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forum[Resolu][Windows] Modifier une clé par défaut du registre en commande
- Solutions[Résolu] Trop de programmes se lancent au démarrage
- ForumRésolu!Bug de lecteur cd,démarrage,redémarrage du pc...joli programme!
- ForumVaio launcher/ demarrage auto d un programme au demarrage de windows
- ForumEmpêcher un programme de se lancer au démarrage de windows
- ForumComment faire en sorte qu'un programme ne se lance pas au démarrage de windows?
- ForumDésactiver un programme au démarrage de Windows 2000
- ForumProgramme suspect se lançant au démarrage de windows
- ForumWindows n'a pas pu mettre à jour la configuration de démarrage de l'or
- Voir plus
?