VB6 et Vista

Le
Ed Lapoignee
Bonjour à tous,

j'ai un programme qui créé des clé de registre dans le HKLM
(HKLM/SOFTWARE/MonAppli).

Sous Win200, WinXP, cela fonctionne bien mais sous vista, les clés ne se
créent pas (tout du moins pas dans le HKLM car elles sont créées dans
HKCU/SoftWare/Classes/VirtualStore/MACHINE/SOFTWARE/MonAppli.

J'utilise l'API standard.

Avez-vous une idée ou un exemple qui me permettrait de créer également ces
clés dans le HKLM sous Vista ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #15398721
Bonjour Ed Lapoignee,
Ed Lapoignee a écrit :
Bonjour à tous,

j'ai un programme qui créé des clé de registre dans le HKLM
(HKLM/SOFTWARE/MonAppli).

Sous Win200, WinXP, cela fonctionne bien mais sous vista, les clés ne se
créent pas (tout du moins pas dans le HKLM car elles sont créées dans
HKCU/SoftWare/Classes/VirtualStore/MACHINE/SOFTWARE/MonAppli.

J'utilise l'API standard.

Avez-vous une idée ou un exemple qui me permettrait de créer également ces
clés dans le HKLM sous Vista ?

Merci





As tu les droits administrateur. Si ce n'est pas le cas, même avec
regedit, tu ne peux créer/supprimer de clés dans HKLMSoftware. Les
utilisateurs "standards" n'ont que le droit de lecture.

HKLM/SOFTWARE/MonAppli n'existant pas, l'API

RegOpenKeyEx(hKey, SubKey, 0&, KEY_WRITE, phkResult)

renvoie 2 (clé non trouvée), en étant administrateur et
on peux donc passer à :

RegCreateKey(hKey, SubKey, phkResult)

Si on est pas administrateur,

RegOpenKeyEx(hKey, SubKey, 0&, KEY_WRITE, phkResult)

renvoie 0, la clé n'est donc pas crée.

Sous XP, si on ne possède pas les droits sur HKLMSoftware

RegOpenKeyEx(hKey, SubKey, 0&, KEY_WRITE, phkResult)

renvoie bien 2 (clé non trouvée), et

RegCreateKey(hKey, SubKey, phkResult)

renvoie 5 (Access Denied), ce qui est cohérent.

Il semblerait donc que ce soit un bug Vista.

Tu peux essayer de lancer ton programme avec :

click droit => Exécuter en tant qu'administrateur

--
Cordialement,

Jacques.
Jacques93
Le #15398711
Ed Lapoignee a écrit :
Bonjour à tous,

j'ai un programme qui créé des clé de registre dans le HKLM
(HKLM/SOFTWARE/MonAppli).

Sous Win200, WinXP, cela fonctionne bien mais sous vista, les clés ne se
créent pas (tout du moins pas dans le HKLM car elles sont créées dans
HKCU/SoftWare/Classes/VirtualStore/MACHINE/SOFTWARE/MonAppli.

J'utilise l'API standard.

Avez-vous une idée ou un exemple qui me permettrait de créer également ces
clés dans le HKLM sous Vista ?

Merci





Quelques compléments d'information :

--
Cordialement,

Jacques.
Ed Lapoignee
Le #15398651
Bonjour,

merci pour ta réponse.

En fait, cela fonctionne bien dès que je désactive l'UAC.

Mon compte est bien administrateur de la machine.

Par contre, il semblerait qu'il faile un fichier .manifest autorisant
l'application. Mais je ne sais pas comment faire cela.

Si quelqu'un a un exemple de fichier manifest permettant de donner des
privilèges d'écriture dans le registre, je suis preneur.

Merci à vous.


"Jacques93" a écrit dans le message de
news:
Ed Lapoignee a écrit :
> Bonjour à tous,
>
> j'ai un programme qui créé des clé de registre dans le HKLM
> (HKLM/SOFTWARE/MonAppli).
>
> Sous Win200, WinXP, cela fonctionne bien mais sous vista, les clés ne se
> créent pas (tout du moins pas dans le HKLM car elles sont créées dans
> HKCU/SoftWare/Classes/VirtualStore/MACHINE/SOFTWARE/MonAppli.
>
> J'utilise l'API standard.
>
> Avez-vous une idée ou un exemple qui me permettrait de créer également


ces
> clés dans le HKLM sous Vista ?
>
> Merci
>
>

Quelques compléments d'information :

--
Cordialement,

Jacques.


Jacques93
Le #15398641
Ed Lapoignee a écrit :
Bonjour,

merci pour ta réponse.

En fait, cela fonctionne bien dès que je désactive l'UAC.

Mon compte est bien administrateur de la machine.

Par contre, il semblerait qu'il faile un fichier .manifest autorisant
l'application. Mais je ne sais pas comment faire cela.

Si quelqu'un a un exemple de fichier manifest permettant de donner des
privilèges d'écriture dans le registre, je suis preneur.

Merci à vous.




J'ai trouvé ceci comme fichier Manifest :

<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

mais ça ne fait qu'afficher un message comme quoi le programme nécessite
une élévation des droits. En fait le compte administrateur avec lequel
tu travailles ne semble pas avoir tous les droits (ce qui est une
bizarrerie de Vista). On peut faire apparaître le VRAI compte
administrateur à l'ouverture de session en mettant une clé nommee
'Administrateur' de type DWORD égale à 1 dans la branche :

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows
NTCurrentVersionWinlogonSpecialAccountsUserList

et là même avec UAC activé, il ne se manifeste plus.

Tu peux aussi poser la question sur

microsoft.public.fr.windows.vista.programmation

ou son équivalent US. Le problème n'est pas spécifique à VB

--
Cordialement,

Jacques.
Ed Lapoignee
Le #15398621
Merci pour ton aide.

Pour ceux que cela interresse, j'ai trouvé une solution de contournement.

Dans mon logiciel de fabrication de Setup. Je fait créer la clé :

HKCU/Software/Microsoft/WindowsNT/CurrentVersion/AppCompatFlags/Layers

Dans cette clé j'ajoute une valeur chaîne dont le nom est le chemin complet
de mon .exe. et avec pour donnée la valeur RUNASADMIN.

Et là cela fonctionne bien.

A+

"Jacques93" a écrit dans le message de
news:
Ed Lapoignee a écrit :
> Bonjour,
>
> merci pour ta réponse.
>
> En fait, cela fonctionne bien dès que je désactive l'UAC.
>
> Mon compte est bien administrateur de la machine.
>
> Par contre, il semblerait qu'il faile un fichier .manifest autorisant
> l'application. Mais je ne sais pas comment faire cela.
>
> Si quelqu'un a un exemple de fichier manifest permettant de donner des
> privilèges d'écriture dans le registre, je suis preneur.
>
> Merci à vous.
>

J'ai trouvé ceci comme fichier Manifest :

<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

mais ça ne fait qu'afficher un message comme quoi le programme nécessite
une élévation des droits. En fait le compte administrateur avec lequel
tu travailles ne semble pas avoir tous les droits (ce qui est une
bizarrerie de Vista). On peut faire apparaître le VRAI compte
administrateur à l'ouverture de session en mettant une clé nommee
'Administrateur' de type DWORD égale à 1 dans la branche :

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows
NTCurrentVersionWinlogonSpecialAccountsUserList

et là même avec UAC activé, il ne se manifeste plus.

Tu peux aussi poser la question sur

microsoft.public.fr.windows.vista.programmation

ou son équivalent US. Le problème n'est pas spécifique à VB

--
Cordialement,

Jacques.


Jacques93
Le #15398611
Ed Lapoignee a écrit :
Merci pour ton aide.

Pour ceux que cela interresse, j'ai trouvé une solution de contournement.

Dans mon logiciel de fabrication de Setup. Je fait créer la clé :

HKCU/Software/Microsoft/WindowsNT/CurrentVersion/AppCompatFlags/Layers

Dans cette clé j'ajoute une valeur chaîne dont le nom est le chemin complet
de mon .exe. et avec pour donnée la valeur RUNASADMIN.



Je crois qu'avec WINXPSP2 ça devrait passer aussi,
cela correspond à la clé crée par l'onglet compatibilité du programme :

http://cjoint.com/?gBrMUP5pVn

Et là cela fonctionne bien.

A+




--
Cordialement,

Jacques.
Publicité
Poster une réponse
Anonyme