Ajouter une Application au Démarrage de la base de Registre)
Je suis en train d'ajouter mon logiciel de registre, j'ai trouvé quelques morceaux de codes que je peux utiliser, mais pas de travail complète, code C/C++ est nouveau pour moi et ne peut pas créer sur mon propre. Mais ici, c'est l'idée de base: Vérifier si la clé reg définir si le crée pas.
J'ai pu obtenir mon programme d'emplacement à l'aide de ce code:
TCHAR szPath[MAX_PATH];
GetModuleFileName(NULL,szPath,MAX_PATH);
Et a été en mesure de créer la clé avec: (Pas sûr si c'est la bonne façon)
HKEY newValue;
RegOpenKey(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",&newValue);
RegSetValueEx(newValue,"myprogram",0,REG_SZ,(LPBYTE)szPath,sizeof(szPath));
RegCloseKey(newValue);
return 0;
Ce manque, Une petite vérifier si la clé n'est pas déjà là...
Merci!
OriginalL'auteur Boris Daka | 2013-04-09
Vous devez vous connecter pour publier un commentaire.
Voici un code qui probablement est-ce que vous voulez. Appel
RegisterProgram
pour votre fichier EXE auto-inscrire lui-même pour être automatiquement lancé lorsque l'utilisateur se connecte. Cette fonction appelleGetModuleFileName
puis appelle une autre fonction d'assistance appeléRegisterMyProgramForStartup
que l'écriture dans le registre.Appel
IsMyProgramRegisteredForStartup(L"My_Program")
pour détecter si l'enregistrement existe réellement et qu'il semble valide.Une note rapide. L'impact sur les performances de la vérification pour voir si la clé existe avant de l'écrire de nouveau est négligeable. Vous pouvez simplement appeler RegisterProgram aveuglément et il va remplacer la clé si elle existe déjà. Détecter si l'enregistrement existe, c'est utile pour l'initialisation de votre INTERFACE utilisateur case à cocher qui active ou désactive le démarrage automatique. (Vous donnez à vos utilisateurs un choix, non? Parce que je déteste les applications qui s'installent automatiquement pour s'exécuter automatiquement, sans me donner le choix.)
J'ai ajouté int main RegisterProgram(); pour tester si cela fonctionne, et j'ai eu d'erreur lors de la compilation: 1. Dans la fonction "RegisterMyProgramForStartup': 7718:5: warning: passing argument 2 de "RegCreateKeyExA" de incompat ible de type pointeur [activé par défaut] 2. c:\mingw\bin\../lib/gcc/mingw32/4.7.2/../../../../include/winreg.h:66:23: note: attendu "LPCSTR", mais l'argument est de type " short unsigned int *' 7725:9: warning: passing argument 2 de "RegSetValueExA" de incompati ble pointeur de type [activé par défaut] 3. attend LPCSTR", mais l'argument est de type 'PCWSTR'
Vous aurez corrigé de la compilation question par #la définition de l'UNICODE et _UNICODE dans votre environnement de construction. J'ai fixé ma réponse ci-dessus de telle sorte que vous n'avez pas à le faire. Aussi, j'ai changé le code pour ajouter des "citations" dans le chemin d'accès exe. J'ai aussi mis à jour pour permettre le passage d'arguments à lui aussi bien.
Mon mauvais. Je compile en C++. Fixe.
Changement de tous les
wchar_t
types de WCHAR.OriginalL'auteur selbie
Pour vérifier si oui ou non la valeur existe, appelez
RegQueryValueEx
.Noter que ce que vous avez appelé
newValue
est en fait une clé plutôt qu'une valeur. Pour éviter toute confusion, vous devriez nom en tant que tel. J'ai utilisé le nomhKey
.Puis de vérifier si oui ou non la valeur existe, comparer
retval
contreERROR_SUCCESS
comme décrit dans la la documentation.L'autre problème avec votre code, c'est qu'il n'y a absolument aucune vérification d'erreur. Je vais laisser ça à vous de résoudre.
Ce n'est pas juste. Vous devez appeler
RegQueryValueEx
après avoir appeléRegOpenKey
. Parce que vous avez besoin d'avoir un handle de la clé.Oh mon stupide erreur que diriez-maintenant, est-ce mieux? pastebin.com/0guvBRfj
subValue
n'a pas été déclaré. Donc, déclarer, avant de tenter de les lui attribuer.Vous pouvez utiliser les débogueurs avec GCC. Par exemple GDB. Mais vous pouvez aussi simplement utiliser printf débogage.
OriginalL'auteur David Heffernan
Vous oubliez d'écrire un argument au sujet de la sécurité de l'accès
OriginalL'auteur ITishnik ArtStudio