Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VB6 et Vista

6 réponses
Avatar
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

6 réponses

Avatar
Jacques93
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.
Avatar
Jacques93
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 :
<http://forums.microsoft.com/MSDN/ShowPost.aspx?PostIDq9433&SiteID=1>

--
Cordialement,

Jacques.
Avatar
Ed Lapoignee
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 :
<http://forums.microsoft.com/MSDN/ShowPost.aspx?PostIDq9433&SiteID=1>

--
Cordialement,

Jacques.


Avatar
Jacques93
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 :

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<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.
Avatar
Ed Lapoignee
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 :

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<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.


Avatar
Jacques93
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.