none
Application Nécessitant des droits élevés avec Utilisateur ne disposant pas de droits Admin local RRS feed

  • Question

  • Bonjour,

    Je développe une application qui dans certains cas à besoin de modifier une clé dans la base de registre.

    Or les utilisateurs de mon domaine n'ont pas de droits d'admin local du poste.

    Evidement lors de la tentative d'écriture de la clé il y a une exception de securité.

    Après la modif du manifeste ( asInvoker -> requireAdministrator) au lancement de l'application il y a la fenetre de demande de login en tant qu'utilisateur Admin, je pense que ce n'est pas la bonne méthode.

    Existe - t -il un moyen dans l'application de faire une sorte d'emprunt d'identité pour executer une seule commande? 

    Merci D'avance

    jeudi 23 février 2012 09:00

Réponses

  • Oui mais il faudrait sans doute connaitre le mot de passe à emprunter (http://support.microsoft.com/kb/306158, ASP.NET mais les 2 dernières doivent marcher aussi en Windows) ce qui est le mécanisme UAC de Windows.

    Ce sont des machines de votre entreprise ou cela peut-être un utilisateur quelconque sur la planète ? Il serait plus facile dans le premier cas d'avoir par exemple un compte dédié juste à l'accès de cette clé (si le mot de passe est compromis cela aura moins d'impact que de compromettre le mot de passe d'un admin).

    C'est à faire une fois ? Je le ferais dans une appli séparée si c'est un "setup" ou je regarderais plutôt si il n'y a pas moyen de faire ce que je veux autrement...

    Le but général est ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 23 février 2012 09:23
    Modérateur
  • Bonjour,

    Oui, il faut utiliser la méthode WindowsIdentity.Impersonate() : http://msdn.microsoft.com/fr-fr/library/w070t6ka.aspx

    Cependant, il faudra que votre application puisse connaitre qqpart le mot de passe adminsitrateur afin d'emprunter son indentité.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 23 février 2012 09:52
    Modérateur
  • Bonjour Ciprian,
     
    Oui c'est possible via GPO.
    Je le faisais souvent dans une vie antérieure où je devais jongler avec
    des utilisateurs à ne surtout pas mettre en administrateur et nombre
    d'applications qui allaient :
    - écrire dans le registre,
    - modifier ou créer des fichiers dans Program Files
    - et le meilleur pour la fin : modifier et créer des fichiers dans
    System32 !
     
    Le problème d'Olivier me paraissait assez proche de tout cela, d'où ma
    proposition.
     

    Fred
    mardi 28 février 2012 17:28

Toutes les réponses

  • Oui mais il faudrait sans doute connaitre le mot de passe à emprunter (http://support.microsoft.com/kb/306158, ASP.NET mais les 2 dernières doivent marcher aussi en Windows) ce qui est le mécanisme UAC de Windows.

    Ce sont des machines de votre entreprise ou cela peut-être un utilisateur quelconque sur la planète ? Il serait plus facile dans le premier cas d'avoir par exemple un compte dédié juste à l'accès de cette clé (si le mot de passe est compromis cela aura moins d'impact que de compromettre le mot de passe d'un admin).

    C'est à faire une fois ? Je le ferais dans une appli séparée si c'est un "setup" ou je regarderais plutôt si il n'y a pas moyen de faire ce que je veux autrement...

    Le but général est ?


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 23 février 2012 09:23
    Modérateur
  • Bonjour,

    Merci pour votre réponse.

    Tout d'abord il s'agit d'une application WinForm destinée à des machines de mon entreprise. Donc pas d'accès depuis l'extérieur.

    L'application doit pouvoir écrire une valeur dans la base de registre, c'est en fait un morceau de notre application de gestion.

    J'avais aussi pensé à l'emprunt d'identité mais cela fonctionne-t-il aussi avec Winform?

    Est ce qu'on peut utiliser BUILTIN\Administrator?

    Merci.

    jeudi 23 février 2012 09:32
  • Bonjour,

    Oui, il faut utiliser la méthode WindowsIdentity.Impersonate() : http://msdn.microsoft.com/fr-fr/library/w070t6ka.aspx

    Cependant, il faudra que votre application puisse connaitre qqpart le mot de passe adminsitrateur afin d'emprunter son indentité.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 23 février 2012 09:52
    Modérateur
  • Bonjour,
     
    Dans le cas d'une application (de gestion) déployée sur un domaine, ne
    serait-il pas possible de modifier les droits sur cette clé via une GPO ?
     

    Fred
    vendredi 24 février 2012 06:34
  •  

    Bonjour, Fred,

    Je crois aussi que le plus simple est d’utiliser l’emprunt d’identité et peut-être demander à l’installation de votre application le mot de passe de l’administrateur et puis le codifier dans le fichier app.config.

    Concernant la GPO… il semble qu’il est possible, mais comme je ne suis pas expert je crois qu’il est mieux mettre votre question sur TechNet (voir les forums Windows Server).

    Bonne journée,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    mardi 28 février 2012 09:21
  • Bonjour Ciprian,
     
    Oui c'est possible via GPO.
    Je le faisais souvent dans une vie antérieure où je devais jongler avec
    des utilisateurs à ne surtout pas mettre en administrateur et nombre
    d'applications qui allaient :
    - écrire dans le registre,
    - modifier ou créer des fichiers dans Program Files
    - et le meilleur pour la fin : modifier et créer des fichiers dans
    System32 !
     
    Le problème d'Olivier me paraissait assez proche de tout cela, d'où ma
    proposition.
     

    Fred
    mardi 28 février 2012 17:28