none
Droits Administrateur RRS feed

  • Question

  • Bonjour à tous,

     Je reviens sur une discussion à propos des droits d’écriture dans des fichiers sur disque C:
    Personnellement j’ai un autre problème:
    J’ai une application qui crée plusieurs runs à mettre dans le menu et pour celà j’emploie Innosetup pour générer le runtime. Tous se passe bien. Innosetup écrit dans le registre les clés dans  la clé Local Machine comme exemple ci après.

    [Registry]

    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software"; Flags: uninsdeletekeyifempty
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; Flags: uninsdeletekey
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueData: "Installed"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "Company"; ValueData: "{code:GetUser|Company}"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "MainDirectory"; ValueData: "{pf}\Luigi's Software"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "Product"; ValueData: "ImgView"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "ProductSerial"; ValueData: "None"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "ProgramDirectory"; ValueData: "{app}"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "Revision"; ValueData: "1.0.1"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "ShareDirectory"; ValueData: "{pf}\Luigi's Software\shared"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "SharedDlls"; ValueData: "{pf}\Luigi's Software\shared"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "SharedData"; ValueData: "{pf}\Luigi's Software\shared\Data"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "Username"; ValueData: "{code:GetUser|Name}"
    Root: HKLM; Subkey: "SOFTWARE\Luigi's Software\ImgView"; ValueType: string; ValueName: "DbTemplates"; ValueData: "{pf}\Luigi's Software\shared\DbTemplates"
    Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"; Flags: uninsdeletekeyifempty
    Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ImgView.exe"; Flags: uninsdeletekey
    Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ImgView.exe"; ValueType: string;ValueData: "{app}\ImgView.exe"
    Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\ImgView.exe"; ValueType: string;ValueName: "Path"; ValueData:"{app};{pf}\Luigi's Software\shared"

    Etc……….

    Toutefois  la première fois que le programme tourne (lancé pa innosetup) il doit créer les cles des ODBC dals le registre pour laisser à l’utilisateur le choix de l’eplacement des différentes bases de données

    Je suis utilisateur Administrateur e le programme refuse l’écriture. J’ai vérifié dans les comptes utilisateur e l’administrateur a les droits par défaut. Pour pouvoir modifier les paramètres de Windows je dois absolument les modifier et indiquer “ne jamais avertir”, c’est à dire enlever toutes les protections. Pour moi ce n’est pas un problème, me je crains qu’un utilisateur final ne soit pas à l’aise avec un système ouvert à tout.

    J’ai essayé de modifier le programme dans le fichier app.manifest en remplaçant:

    <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
    par
    <
    requestedExecutionLevel  level=" requireAdministrator " uiAccess="false" />

    mais le compilateur me dit que ce n’est pas accepté par ClickOnce.

    Comment faire? Serait-il possible de ne pas employer ClickOnce et comment?

    Merci pour une réponse et bonne journée.

    Luigi


    Luigi1936
    mardi 15 mars 2011 10:44

Réponses

  • Bonjour,

    D'après http://msdn.microsoft.com/en-us/library/ms228996.aspx cela ne semble pas possible avec ClickOnce (qui a la base a pour but de déployer simplement des applications dans un contexte limité) : "Any ClickOnce application that attempts to set its requestedExecutionLevel attribute to requireAdministrator or highestAvailable will not install on Windows Vista."

    Je ne vois guère que :
    - commencer par vérifier que toutes les opérations voulues nécessitent bien ce droit. Est-il vraiment nécessaire d'être administrateur pour créer une source ODBC ? De mémoire, il est possible de créer une "source utilisateur" au lieu d'une "source système" ou même de créer un simple fichier (.udl si ma mémoire est exacte).

    Sinon, cette installation devra sans doute être faite avec un "vrai" installeur comme InnoSetup ou Windows Installer (on a déjà cette étape alors qu'il s'agit pourtant d'une application ClickOnce ?)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 16 mars 2011 11:53
    Modérateur

Toutes les réponses

  • Bonjour,

    Avec une autre version que vb express (Visual Studio professionnelle ou ultimate), il est possible de créer un projet de déploiement

    Il y a une explication ici:

    http://www.youtube.com/watch?v=No1paeGvBtw

     


    fred
    mardi 15 mars 2011 13:21
  • Bonjour

    Je ne comprends pas la réponse. Je développe avec Visual Studio 2008 et pas vb express
    Je déploie toutes mes applications depuis des années avec InnoSetup, je n'ai jamais eu de problèmes
    Je demande uniquement comment éviter que clickonce m'empêche d'assigner certains droits à l'Administrateur.
    Merci 

    Luigi

     


    Luigi1936
    mardi 15 mars 2011 13:36
  • Bonjour,

    quelle est la version de l'operating systeme ?

    Seven, vista, XP ?

     


    fred
    mardi 15 mars 2011 13:42
  • Sorry, j'ai oublié de donner ce renseignement.

    Nous avons 3 systèmes de développemet 1 win7 64 bits et 2 Win7 32 bits.
    Nous installons  les programmes sur XP sans aucun problème.
    Vista donne le même problème que Win7

    Merci

    Luigi

     


    Luigi1936
    mardi 15 mars 2011 13:48
  • Bonjour,

    D'après http://msdn.microsoft.com/en-us/library/ms228996.aspx cela ne semble pas possible avec ClickOnce (qui a la base a pour but de déployer simplement des applications dans un contexte limité) : "Any ClickOnce application that attempts to set its requestedExecutionLevel attribute to requireAdministrator or highestAvailable will not install on Windows Vista."

    Je ne vois guère que :
    - commencer par vérifier que toutes les opérations voulues nécessitent bien ce droit. Est-il vraiment nécessaire d'être administrateur pour créer une source ODBC ? De mémoire, il est possible de créer une "source utilisateur" au lieu d'une "source système" ou même de créer un simple fichier (.udl si ma mémoire est exacte).

    Sinon, cette installation devra sans doute être faite avec un "vrai" installeur comme InnoSetup ou Windows Installer (on a déjà cette étape alors qu'il s'agit pourtant d'une application ClickOnce ?)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 16 mars 2011 11:53
    Modérateur
  • Pour déployer des applications avec base de données j'ai utilisé "Excelsior Delivery" (après avoir essayé Inno)qui propose dans son wizzard des réglages par défaut qui conviennent.
    Cordialement
    Pascal
    http://www.scalpa.info
    jeudi 17 mars 2011 18:56
  • Chers amis

    Je n’ai aucun problème avec le déploiement de InnoSetup, au contraire il fait tout ce que je lui demande et crée les clés dans le registre à l’endroit que je lui indique (LOCAL MACHINE).

    A la fin de l’installation il lance mon programme écrit en VB2008, et pour la toute première fois il est nécessaire de définir l’emplacement de la base de donnée accessibles par tous les users de la comptabilité. Il est donc impossible de leur laisser le soin de créer une ODBC User.

    Le programme VB2008 est mis en route par InnoSetup et l’utilisateur Administrateur qui l’a lancé se trouve dans l’impossibilité de créer une ODBC. Sauf s’il met fin à toutes les sécurités.
    Le pire est que après avoir demandé à l’Administrateur l’endroit  où placer la base de données, le programme poursuit allégrement son run, et sans donner aucun message ne crée pas l’ODBC dans LocalMachine.
    Pourquoi deux poids deux mesures ???.

    Pourquoi ne pas simplement avertir l’utilisateur qu’il va modifier le système e lui demande de confirmer ?
    Pourquoi dans les mêmes conditions ce message apparait si on installe un programme qui n’a pas un certificat connu ?

    Je constate de nouveau que pour Microsoft c’est plus si facile de faire compliqué que de faire facile. Je voudrai avoir cinq minutes un de leur ingénieurs en informatique, à côté de moi, lorsque les clients téléphonent

    Bien à vous tous et merci d’avoir répondu à ma question

    Luigi


    Luigi1936
    mercredi 23 mars 2011 17:26
  • Malheureusement ce n'est pas le but de ClickOnce. Ici je l'utilise pour lancer une application Windows depuis un intranet, on clique et l'application se lance.

    Le but de ClickOnce est de faire comme si il n'y avait aucune installation mais il n'y a pas de miracle et il n'est donc pas possible de faire quoi que ce soit qui requiert effectivement un "vrai" contexte d'installation.

    Comme les droits admins sont requis, je ferais cette partie plutôt dans l'installateur ""InnoSetup". Il reste bizarre qu'il n'y ait pas une SecurityException quand on tente d'écrire dans HKLM (ou alors l'écriture est redirigée ailleurs ?).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 24 mars 2011 17:47
    Modérateur