Comment exécuter l’application C # dans le compte Invité en tant qu’administrateur

Je n’ai pas eu de réponse correcte et j’ai eu beaucoup de réponses comme “nous ne pouvons pas faire comme ça” pour mes questions précédentes.

C’est pourquoi j’ai décidé d’expliquer en détail mon problème, aidez-moi si vous le pouvez ou demandez à votre ami qui peut y répondre.

Maintenant mon problème:

Étape 1:

J’ai créé un programme C # qui édite divers registres Windows. Pour éditer des registres Windows, nous devons avoir un privilège administrateur. Mon programme fonctionne correctement en mode Administrateur sans aucun problème.

Étape 2:

Je veux aussi que mon programme soit exécuté en mode utilisateur limité. Si peu de gens n’ont pas obtenu ce que je dis, voici que je veux exécuter mon code C # ci-dessus en mode Invité. En mode invité, il existe une ressortingction selon laquelle nous ne pouvons pas modifier les registres Windows. Alors que j’exécute mon application, je reçois une notification demandant le mot de passe administrateur. Après avoir inséré le mot de passe administrateur, mon application fonctionne correctement.

Étape 3:

Je souhaite que mon application ne demande pas le mot de passe administrateur à chaque fois dans Invité / Compte limité. Je souhaite également que le mode Invité fonctionne. Je souhaite également que, en mode invité, mon application puisse accéder aux répertoires Windows et les modifier.

Étape 4:

Beaucoup de gens m’ont répondu que nous ne pouvions pas faire cela en mode Invité car Windows restreint les utilisateurs à éditer des registres Windows à des fins de sécurité. Donc, s’il vous plaît, si vous vous sentez comme cela, ne répondez pas à cette question. Je réponds à ces personnes que tous les bons antivirus qui fonctionnent en mode invité ont access aux registres Windows.

Étape 5:

  1. Comme je connais le mot de passe administrateur, il existe un moyen de sauvegarder le mot de passe administrateur dans notre code C # et de contourner le message contextuel de demander le mot de passe administrateur encore et encore.

  2. Y at-il un moyen de demander à Windows que notre application s’exécute en mode Admin et ne demande pas le mot de passe administrateur encore et encore

  3. Comment l’application antivirus exécutée en mode invité effectue-t-elle toutes les opérations telles que la suppression du virus du dossier system32 et la réinitialisation des registres après une attaque de virus. Cette application antivirus ne demande jamais “Nous avons trouvé un virus dans le dossier System32, étant donné que je suis en mode Invité et que je ne parviens pas à supprimer les virus, entrez le mot de passe administrateur pour pouvoir supprimer le virus”

J’espère que tu as compris ce que je veux dire?

Je veux développer une application C # qui devrait fonctionner dans n’importe quel mode (Admin / Invité / Limité) et devrait pouvoir créer, modifier et supprimer des registres Windows.

Note: S’il vous plaît ne répondez pas avec “clic droit et exécuter en tant qu’administrateur”.

À ma connaissance, le logiciel antivirus résout ce problème en exécutant deux processus (ou plus): un programme d’interface utilisateur s’exécutant en tant qu’utilisateur invité et un processus privilégié (généralement un service Windows). Le programme utilisateur n’est pas en mesure de manipuler des ressources restreintes (comme les hives de registre sécurisées). Il communique avec le processus privilégié (de manière sécurisée) et le processus privilégié exécute l’action privilégiée au nom de l’utilisateur.

C’est le même type de technique par laquelle les programmes accèdent jamais aux ressources privilégiées, telles que le matériel. Votre processus de niveau utilisateur n’a pas (généralement) le droit d’effectuer diverses actions matérielles, comme le remappage de la mémoire dans la MMU, mais le système d’exploitation le fait et vous pouvez demander au système d’exploitation de faire ce que vous voulez. Le système appelle le thunk en mode kernel, ce qui est entièrement privilégié. Cependant, l’interface d’appel système limite les types d’actions privilégiées que vous pouvez entreprendre.

Je ne peux pas m’empêcher de dire NON, vous ne pouvez pas faire de choses administratives sous un compte invité. Et vous ne pouvez pas contourner par programmation l’UAC.

Peut-être que les 2 solutions de contournement suivantes sont intéressantes pour vous?

Je crois que le logiciel antivirus s’exécute sous le compte système (ne peut être installé que par un administrateur). Pour votre application, vous pouvez créer une architecture serveur / client (les deux exécutant pas le même ordinateur) où le serveur est installé par l’administrateur (dans le cadre du package complet) et s’exécute par défaut sous le compte Système. Ensuite, vous pouvez utiliser le client sur le compte de quête pour envoyer des commandes au serveur.

Une autre solution pourrait consister à ne pas utiliser le registre directement, mais à utiliser un autre magasin de données sous-jacent accessible par un compte invité et à le synchroniser à la demande avec le registre (démarrage et arrêt?). la course de votre application.