En donnant la demande élevée de contrôle de compte d'utilisateur
J'ai une application qui a besoin de l'élévation.
J'ai le code qui me permet de donner, mais l'application s'ouvre deux fois.. ce qui est de la question..
voici donc le code de Form1:
public Form1()
{
InitializeComponent();
WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
if (!hasAdministrativeRight)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName = Application.ExecutablePath;
startInfo.Verb = "runas";
try
{
Process p = Process.Start(startInfo);
}
catch (System.ComponentModel.Win32Exception ex)
{
return;
}
}
}
et c'est le code des programmes.cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
sur le débogage je trouve que d'abord il exécute
Processus p = Processus.Start(startInfo);
qui ouvre l'application élévation boîte de dialogue, puis ouvre l'application
mais alors il va à la
Application.Run(new Form1());
dans main() et s'ouvre à nouveau l'application.
je ne veux pas ouvrir de nouveau l'application...
je suis nouveau sur ce est ce que je fais de mal et j'en ai besoin pour fermer le contrôle de compte d'utilisateur une fois ouvert..
grâce
OriginalL'auteur user175084 | 2011-06-20
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de se mêler à tout ça pour vous assurer que votre application s'exécute toujours avec des privilèges élevés. Vous pouvez simplement ajouter un manifeste de l'application qui indique à Windows pour exécuter votre application élevée, et l'invite UAC apparaît, sans avoir à écrire une seule ligne de code.
Il y a une question connexe, avec une réponse qui décrit également comment ajouter un manifeste ici: Comment puis-je intégrer un manifeste de l'application dans une application à l'aide de VS2008?
L'application est privilèges d'administration, tout comme vous l'avez demandé de faire.
oui, mais pourquoi est-il en me demandant de redémarrer visual studio?
Parce que vous n'êtes pas en cours d'exécution Visual Studio comme un processus élevés, le plus probable. Puisque vous êtes le démarrage de l'application à partir de Visual Studio, Visual Studio doit être élevé pour être capable de démarrer un processus élevés.
Nous sommes ici pour vous aider, pas de soucis. =)
OriginalL'auteur Jon
L'élévation de vos privilèges est toujours à démarrer un nouveau processus. Il n'y a pas moyen de contourner cela, d'autres que de commencer avec des privilèges élevés, en premier lieu, par la configuration de votre application nécessite des privilèges d'administrateur. Ce que vous pouvez faire est de mettre fin à l'application juste après l'élévation de démarrage du processus, de sorte que vous n'avez qu'une application en cours d'exécution.
Ce scénario est utilisable pour les applications qui ne nécessitent certaines parties de leur fonction d'être élevée, comme un automatiquement à jour automatique du programme d'installation a besoin d'accéder aux Fichiers de Programme - et pas un seul qui nécessite un accès administratif à tous les temps.
Je vous invite à vérifier les autres réponses, d'autres moyens d'obtenir ce que vous voulez.
merci.. u ont été vraiment utiles.
OriginalL'auteur J. Steen
Cette est une bien meilleure approche lorsque votre application est connu pour exiger des privilèges d'Administrateur depuis le début.
Coffre-fort est relatif. Vous êtes évidemment de faire quelque chose inherantly dangereux parce que vous avez besoin des autorisations élevées dans votre application. Ajouter le manifeste pour votre application uniquement des effets de l'application que vous travaillez de sorte à ne pas affecter vos autres projets, sauf si vous incluez le manifeste dans ces applications. L'exécution de VS avec des privilèges élevés de tous les temps n'est pas la façon dont je le fais et je ne peux pas vraiment répondre à ce que les vulnérabilités pourrait ouvrir pour vous, parce que certains de ce que sera la personne à charge sur les compléments et d'autres facteurs.
merci pour l'aide.. il a travaillé.
le lien ne fonctionne plus.
Vous pouvez afficher une version archivée de l'article à l'aide de l'Internet Archive Wayback Machine.
OriginalL'auteur Bueller
Déplacer le WindowsPrincipal code de votre Formulaire de Programme.cs comme dans l'exemple ci-dessous. Cette invite l'utilisateur de l'autorité de contrôle de compte d'utilisateur avant le lancement de toute les formes et ne vous lancez le formulaire si l'UAC autorité a été accordée.
OriginalL'auteur Martyn Talbot
Il est un exemple de Microsoft qui montre comment vérifier le niveau de privilège du processus actuel, et comment l'auto-élever le processus en donnant le consentement explicite avec le Consentement de l'INTERFACE utilisateur.
Contrôle de compte d'utilisateur auto-élévation (CSUACSelfElevation)
OriginalL'auteur Alexander Zinoviev