Bonjour,
je souhaiterai pouvoir inscrire une clé de registre dans un compte Standard Vista.
Pourriez-vous m'indiquer le code svp.
J'ai recherché sur internet, je n'ai pas trouvé de code fonctionnant.
Merci
Version imprimable
Bonjour,
je souhaiterai pouvoir inscrire une clé de registre dans un compte Standard Vista.
Pourriez-vous m'indiquer le code svp.
J'ai recherché sur internet, je n'ai pas trouvé de code fonctionnant.
Merci
je suis plutôt novice en la matière, mais je cherche beaucoup, la recherche étant la voie de la sagesse probablement:lol:
je mets ci-dessous, le code que j'utilise pour écrire les clés de registre qui m'intéressent. Ce code fonctionne bien dans un compte admnistrateur, mais pas avec des droits restreints.
j'ai bien trouvé du code mais trop complexe pour moi.
Je ne vois pas dans le tuto, que je consulte comme tout le monde, la notion d'élévation des privilèges ?
Alors je me tourne vers vous, les sages du vb.net.
Merci pour votre réponse
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 Try '====================================================================================================== 'Vérification si les clés .zod et zod_auto_file existent '====================================================================================================== Dim RegExtension As RegistryKey Dim RegAssocFichier As RegistryKey RegExtension = Registry.ClassesRoot.OpenSubKey(".zod", True) RegAssocFichier = Registry.ClassesRoot.OpenSubKey("zod_auto_file", False) Dim CheminIcone = My.Application.Info().DirectoryPath() CheminIcone = CheminIcone & "\Resources\WinZod.ico" Dim CléShell As String = Chr(34) & CheminApplication & Chr(34) & " " & Chr(34) & "%1" & Chr(34) Dim CléDefaultIcon As String = Chr(34) & CheminIcone & Chr(34) '& " " & Chr(34) & "%1" & Chr(34) If RegExtension Is Nothing Or RegAssocFichier Is Nothing Then If RegExtension Is Nothing Then RegExtension = Registry.ClassesRoot.CreateSubKey(".zod", RegistryKeyPermissionCheck.ReadWriteSubTree) RegExtension.SetValue("", "zod_auto_file") End If If RegAssocFichier Is Nothing Then RegAssocFichier = Registry.ClassesRoot.CreateSubKey("zod_auto_file\\shell\\open\\command\", RegistryKeyPermissionCheck.ReadWriteSubTree) RegAssocFichier.SetValue("", CléShell) RegAssocFichier = Registry.ClassesRoot.CreateSubKey("zod_auto_file\\DefaultIcon\", RegistryKeyPermissionCheck.ReadWriteSubTree) RegAssocFichier.SetValue("", CléDefaultIcon) End If End If Catch ex As Exception MessageBox.Show(ex.Message) Me.Dispose() End Try
Une petite recherche sur le forum sur le fichier app.manifest repondra a ta question ;)
Bonsoir,
j'ai beau chercher, mais je ne vois pas le solution.
lorsque je change le manifest dans propriété du projet, afficher les paramètres de l'UAC, je mets :
mais j'ai une erreur :Code:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
alors j'ai dans l'onglet sécurité j'ai décoché :Citation:
Erreur 1 MSB3190 : ClickOnce ne prend pas en charge le niveau d'exécution de la demande 'requireAdministrator'. WinZod
Activer les paramètres de sécurité clickonce
mais l'executable n'écrit toujours pas la clé de registre que je veux dans le compte standard.
j'ai lu le tuto : Développer des applications sous Windows Vista - partie 1
la partie sur le manifest,
je ne trouve pas l'outil MT.exe pour voir dans l'exe si manifest.
Pouvez-vous me renseigner ?
cdlt
La ligne requireAdministrator du manifest doit, sur les machines n'ayant pas les droits admin, d'afficher la fenetre UAC et de demander confirmation ? l'as tu cette demande ?
Par contre, je ne connais pas clickonce ... desole
Mais je pense que cela doit etre une fonction limitee de la version d'essai ..
bonjour Danyel,
non UAC n'affiche pas la demande de confirmation.
j'ai juste un message : l'accès à la clé de registre 'HKEY_CLASSES_ROOT\.zod' n'est pas autorisé (même en ouvrant le programme en tant qu'administrateur).
ma version de VB.NET et 2008 en version pro (valide et officielle), et clickonce doit permettre de créer le Setup.
j'ai le sentiment que le manifest ne s'intègre pas au fichier exe. Peut-être que je ne sais pas lier le fichier manifest au fichier exe ?
Merci de ta réponse.
cdlt
Ah, si l'acces à la bdr n'est pas autorise meme avec les droits d'admin, c'est que le probleme est autre ...
Il n'y a aucune restriction à l'acces bdr avec les droits d'admin et l'UAC (que je sache)
La majorite des outils externes à vs sont tous limites ou en version light (je crois que c'est le cas de clickonce)
Comme precedemment, je pense que le probleme vient d'ailleurs.
Donne moi exactement la ligne de code qui pose probleme.
Ca ne fonctionne pas aussi en debug et/ou en release (sans clickone ?)
ligne :
j'ai essayé l'exe trouvé dans bin\debug et bin\releaseCode:RegExtension = Registry.ClassesRoot.CreateSubKey(".zod", RegistryKeyPermissionCheck.ReadWriteSubTree)
rien qui fonctionne ?
cdlt
Ce que je ne comprends pas, c'est exactement ce que tu veux faire ?
Tu veux juste creer dans la bdr ou donner des droits ?
Je lors du premier lancement de mon application qu'une clé de registre soit inscrite dans la base de registre.
La clé s'inscrit bien lorsque je suis en administrateur mais pas lorsque je suis en mode standard. hors je voudrai inscrire cette clé également lorsque le compte utilisateur est en mode standart.
Ok, donc si c'est juste pour inscrire dans la bdr, utilise plutot registry.setvalue et .getvalue
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 ' The name of the key must include a valid root. Const userRoot As String = "HKEY_CURRENT_USER" Const subkey As String = "RegistrySetValueExample" Const keyName As String = userRoot & "\" & subkey ' Integer values can be stored without specifying the ' registry data type, but Long values will be stored ' as strings unless you specify the type. Note that ' the integer is stored in the default name/value ' pair. Registry.SetValue(keyName, "", 5280) Registry.SetValue(keyName, "TestLong", 12345678901234, _ RegistryValueKind.QWord) ' Strings with expandable environment variables are ' stored as ordinary strings unless you specify the ' data type. Registry.SetValue(keyName, "TestExpand", "My path: %path%") Registry.SetValue(keyName, "TestExpand2", "My path: %path%", _ RegistryValueKind.ExpandString) ' Arrays of strings are stored automatically as ' MultiString. Similarly, arrays of Byte are stored ' automatically as Binary. Dim strings() As String = {"One", "Two", "Three"} Registry.SetValue(keyName, "TestArray", strings)
Pour écrire dans HKCR tu aura besoin des droits d'admin. Et si ce n'est qu'au premier lancement de l'appli tu pourrai faire un exe principal en asInvoker et un second exe en requireAdministrator, lancé au premier lancement, et qui ferai cette tâche.
Ceci dit ce serai plus gracieux d'effectuer cette opération pendant l'installation de l'application, pas au premier lancement (surtout si c'est pour une association de fichier, comme ça a l'air d'être ...).
Bonsoir,
le code fonctionne bien avec une clé : HKEY_CURRENT_USER mais pas avec une clé : HKEY_CLASSES_ROOT
message erreur :Il me faut bien les droits administrateurs, mais mon code ne fait pas d'élévation de privilège ?Citation:
accès à la clé de registre KHEY_CLASSES_ROOT\.zod refusé
comment puis-je savoir s'il y a bien un manifest dans l'exe que je génére ?
Cdlt
Ouvre ton exe avec notepad (retour automatique à la ligne activé) et regarde si à la fin de ton exe tu vois ton manifest.
Re
en fait, en publiant l'application avec clickOnce, il n'est pas possible de générer un manifest avec élévation des privilège (ma conclusion).
en prenant directement l'exe dans debug, la publication doit se fait par "asinvoker"
En recherchant j'ai vu que l'on pouvait faire un déployement : "Windows Installer" qui permet de faire des déployement avec une confiance totale.
Connaissez vous un logiciel pour créer ce genre de déployement ? un freeware me plairait.
cdlt
Bon, je viens de faire une tonne d'essai dont voici les resultats.
Le programme que j'ai fait ne fais que creer dans la bdr comme ton code et avec les droits admin dans le manifest.
- Avec compte utilisateur vierge (fraichement crée) et UAC active
Au lancement de l'application, la fenetre UAC s'ouvre bien et demande le mot de passe administrateur pour executer le programme.
Une fois ceci, l'ecriture dans le HKCR se fait sans aucun probleme ni avertissement.
- Avec compte utilisateur vierge (fraichement crée) et UAC desactive
Lancement impossible de l'application.
- Avec compte administrateur et UAC active
Au lancement, la fenetre UAC s'ouvre aussi mais ne demande pas le mot de passe, juste un avertissement quoi.
Une fois ceci, l'ecriture dans le HKCR se fait sans aucun probleme ni avertissement.
- Avec compte administrateur et UAC desactive
Le lancement du programme se fait sans aucune demande.
Une fois ceci, l'ecriture dans le HKCR se fait sans aucun probleme ni avertissement.
Donc si tu ne peux pas ecrire dans la bdr et le HKCR, c'est qu'il y a un autre probleme ...
Bonsoir,
en ouvrant l'exe je ne vois pas de balises xml. Il semble donc qu'il y ait pas de manifest.