2009-02-11 11 views
0

Est-il possible d'exécuter une application de formulaire Windows ou une application console sous le compte système? Comme l'application asp.net peut fonctionner sous le compte du système par le fichier de configuration de la machine changer:Compte système de l'application C# Form

<processModel userName="machine" password="AutoGenerate" /> 

Ceci est de donner plus de privilèges au programme ...

Répondre

0

Tu ne peux pas le faire en lançant à partir d'un tâche planifiée dans Windows?

+0

revenez? vous voulez dire si je mets mon programme sous la tâche programmée (sur la connexion d'utilisateur) il fonctionnera sous la connexion de système et obtenir tous les accès en tant qu'administrateur? –

+0

Oui, vous pouvez sélectionner le compte d'exécution pour la tâche planifiée. – MartinHN

1

Oui. Vous pouvez exécuter n'importe quelle application sous le compte système. Une technique consiste à le lancer en tant que tâche planifiée ou en utilisant l'utilitaire de ligne de commande "at".

Malheureusement, depuis Windows Vista, les applications exécutées de cette manière ne peuvent pas interagir avec l'utilisateur, car elles s'exécutent dans une session différente. Cela signifie que l'exécution d'une application WinForms (ou tout autre type d'interface graphique, vraiment) de cette manière est inutile. De même pour une application de console, si vous voulez voir la sortie.

Si c'est pour un one-off, vous pouvez probablement vivre avec elle. Sinon, vous devriez envisager de créer un service Windows, qui peut être configuré pour s'exécuter sous n'importe quel compte d'utilisateur (y compris SYSTEM). Si vous souhaitez interagir avec lui, vous devez implémenter une application distincte qui lui parle via (par exemple). Remoting .NET.

+0

Eh bien, je ne suis pas trop familier avec la tâche planifiée .. ici son demande de nom d'utilisateur et mot de passe ... J'ai regardé dans Windows Service ... aurait été solution ... mais l'application est basée sur le formulaire (exigences sont telles). .. –

3

deux façons d'obtenir un programme à exécuter dans un contexte utilisateur différent de celui que vous êtes actuellement connecté en tant que:

Utilisez la commande RUNAS

RUNAS /user:USERNAME PROGRAMNAME 

Exemple:

RUNAS /user:YOURDOMAIN\ADMINISTRATOR NOTEPAD.EXE 

Ceci ouvrira une fenêtre de console demandant le mot de passe. La commande RUNAS ne peut pas recevoir de mot de passe via la ligne de commande, elle doit être saisie par l'utilisateur pour des raisons de sécurité.

Créer un raccourci vers le programme qu'il fonctionne sous différents titres de compétence

d'abord créer le raccourci, puis modifier les propriétés de celui-ci, et sur le premier onglet, cliquez sur Avancé. Dans la boîte de dialogue qui apparaît, cochez la case "Exécuter avec des informations d'identification différentes". Lorsque vous démarrez le programme à l'aide du raccourci, une boîte de dialogue s'affiche pour vous demander le nom d'utilisateur et le mot de passe dans lesquels vous souhaitez que le programme s'exécute. Encore une fois vous ne pouvez pas stocker le nom d'utilisateur et mot de passe pour des raisons de sécurité.

Si vous voulez créer un raccourci ou similaire qui sélectionne automatiquement un nouveau contexte d'utilisateur, alors j'ai peur que vous ayez besoin de trouver un outil en ligne, sauf si vous voulez exécuter le programme en tant que service ou similaire.

0

Cela dépend de votre objectif. Si vous voulez qu'il s'exécute sous le compte système et permette à un utilisateur d'interagir avec, vous ne pouvez pas le faire. Si vous avez absolument besoin de le faire, il est préférable de créer un service qui gère les opérations qui nécessitent des privilèges supplémentaires et s'exécute en tant que système, et de se connecter à ce service à partir d'une interface graphique exécutée en tant qu'utilisateur.Cependant, si vous suivez cette route, sachez que vous créez un trou dans la frontière de sécurité entre ce qu'un utilisateur standard peut faire et ce que le système peut faire. Assurez-vous de protéger la connexion entre l'interface graphique et le service. le service à seulement ce que vous en avez absolument besoin. Comme lassevk mentionne si vous avez juste besoin de le faire une fois ou occasionnellement, vous pouvez utiliser runas pour exécuter dans un autre contexte de sécurité, mais toujours une interface graphique/console interactive. D'un autre côté, si vous voulez simplement qu'il s'exécute sans surveillance à un certain moment, vous devriez pouvoir utiliser le planificateur de tâches comme le suggère Martin.

+0

Merci pour votre réponse très rapide ... Je suis arrivé à la conclusion similaire de faire un service Windows ... en raison de contraintes de temps, je cherchais une «sortie» ... La plupart des choses fonctionnent assez bien ..except ces choses qui nécessitent des droits d'administrateur ... –

2

Il semble que vous attaquiez le symptôme plutôt que le problème. Qu'est-ce que votre programme doit faire exactement qui nécessite des autorisations supplémentaires? Peut-être qu'il y a une manière différente d'accomplir cette tâche sans exiger aucune sorte d'élévation.

+0

bien le compte de connexion est très restreint ... et l'application a besoin d'accéder aux journaux des événements et système de fichiers .. Il n'y a pas d'autre compte ... –

+0

Windows service est au moins temporairement hors de la question 1. en raison du manque d'interaction (bien que l'interaction de l'utilisateur soit moindre), 2. comme l'application est déjà développée, il n'y a pas de temps pour le changement ... –

+0

Faut-il écrire ou juste lire? –