11
votes

Exécuter PowerShell en tant qu'administrateur de C #

J'ai le code C # suivant xxx

qui me donne l'exception

accès à la clé de registre 'HKEY_LOCAL_MACHINE \ LOGICIEL \ Microsoft \ PowerShell \ 1 \ shellids \ microsoft.powershell' est refusé.

selon Ceci , la solution consiste à démarrer PowerShell en tant qu'administrateur.

normalement, cela peut être accompli en cliquant avec le bouton droit de la souris et en sélectionnant "Exécuter en tant qu'administrateur". Existe-t-il un moyen de le faire par programme?


0 commentaires

5 Réponses :


5
votes

vérifier Ceci out

Vous devez imiter en tant qu'administrateur à Faites-le (vous aurez bien sûr besoin d'informations d'identification d'administrateur)

Vérifiez que l'article, qui est également livré avec le code prêt à l'emploi (je l'ai utilisé et cela fonctionne bien)

essentiellement, Vous devez faire ceci: xxx


3 commentaires

Cela ne fonctionne pas pour moi sur Windows Server 2012 et PowerShell 3.0. :(


Je suis surpris que l'OP a marqué cela comme la réponse. Dans la question, il déclare "en cliquant sur le bouton droit de la souris et sélectionnant" exécuter "exécuter comme administrateur" "qui implique que les informations d'identification qu'elles fonctionnent sont déjà membre du groupe des administrateurs, mais elles sont arrêtées par la sécurité merveilleuse (toux, toux) que MS ajoutée appelée UAC. La solution affichée (et vérifiée éteinte comme) ne résout pas cela. Une partie de moi dit de marquer ce post parce que la réponse ne résout pas la question postée question ...


C'est très ancien code du projet de code. 2005. Il ne va pas fonctionner dans Windows 2012. Je devrais trouver un moyen de le convertir à 64 bits.



2
votes

Les privilèges administratifs sont au niveau l'application . L'application qui a besoin d'un accès administrateur dans ce cas est votre . Créer des activités de course en C # dans une application personnalisée n'invoque PowerShell l'application - elle charge simplement des assemblages dans votre application.

Cela dit, vous pouvez élever lorsque l'autre affiche a déclaré bien que l'intégration des noms d'utilisateur et des mots de passe d'administrateur dans le code source me rend malade.

-oisin


1 commentaires

Il n'est pas nécessaire d'entrer dans le code source, mon extrait est juste un exemple



0
votes

Je pense qu'un modèle alternatif serait d'envelopper l'exécutif PowerShell dans un simple service Web ASP.NET WebAPI.

Le service WebService pourrait ensuite être configuré pour fonctionner avec les autorisations requises nécessaires pour le faire. Il peut fournir sa propre sécurité pour déterminer quels clients peuvent l'appeler.

Pour exécuter un script, vous appelez simplement des méthodes WebService. Vous pouvez faire la méthode assez générale - Nom et paramètres de script.

C'est un peu plus de travail, mais beaucoup plus sécurisé (voir les pensées de X0n). ​​


1 commentaires

C'est plus d'un piratage que d'une méthode alternative. Ce n'est pas parce que vous ne pouvez pas dire que vous devriez.



5
votes

Je sais que c'est un ancien poste, mais nous avons rencontré ce même problème récemment.

Nous avons dû mettre en place la stratégie d'exécution sur la machine exécutant le code C # en exécutant les éléments suivants de PowerShell ... XXX

Lorsque nous l'avions fait précédemment, sans scoper, nous définissions la politique d'exécution pour l'administrateur. Visual Studio \ C # était en cours d'exécution comme l'utilisateur actuel, ce qui lui faisait échouer avec des autorisations insuffisantes.


0 commentaires

0
votes

strictement pour développer Environnement C'est relativement très ancien post. Mais j'ai trouvé une nouvelle façon de le faire. J'hôte l'API Web C # sur IIS 8 ayant du code PowerShell que je souhaite courir avec des privilèges d'administrateur.

Donc, j'ai fourni les informations d'identification de l'administrateur dans le paramètre d'identité du pool d'applications.

 IIS8 sur Windows 2012 Server

Il suffit de définir un compte administrateur dans l'identité de la piscine App.

J'espère que cela aide à personne. :)


4 commentaires

Évitez toujours cela, car c'est un manque sérieux.


c'est bien mieux que de garder les informations d'identification durement codé ... :) @devi - réfléchissez-y une fois


Non convenu, exécutant la piscine IIS en tant qu'administrateur local est une idée très médiocre, rien d'autre ne peut être plus mauvais, même du critère. En général, l'obligation d'exécuter quelque chose d'administrateur local dans une application Web est signalée à une conception médiocre.


Imo sur une machine de deviro, mais sur une machine de production, pas tellement.