Je sais que c'est vieux mais je suis tombé dessus à la recherche de réponses. Dans mon cas, j'utilise la fonction de publication et je dois continuer à l'utiliser. J'ai également besoin d'accéder aux capacités d'administration. Donc, pour cette raison, aucune des réponses ci-dessus n'a fonctionné pour moi.
J'ai fini par ajouter une méthode au tout début de mon application qui vérifie si elle est exécutée en tant qu'administrateur et si ce n'est pas le cas, se relance en tant qu'administrateur. Pour ce faire, vous devez ajouter les références suivantes.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
Ensuite, vous devrez placer ceci quelque part auquel votre méthode principale a un accès pratique. J'utilise WPF, je l'ai donc ajouté à MainWindow.xaml.cs mais vous pouvez l'ajouter n'importe où au début de votre code. N'oubliez pas d'ajouter "statique" à ces méthodes si vous en avez besoin.
private void AdminRelauncher()
{
if (!IsRunAsAdmin())
{
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Assembly.GetEntryAssembly().CodeBase;
proc.Verb = "runas";
try
{
Process.Start(proc);
Application.Current.Shutdown();
}
catch(Exception ex)
{
Console.WriteLine("This program must be run as an administrator! \n\n" + ex.ToString());
}
}
}
private bool IsRunAsAdmin()
{
try
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (Exception)
{
return false;
}
}
Enfin, au démarrage de votre programme, ajoutez une référence à la méthode. Dans mon cas, je l'ai ajouté à MainWindow mais l'ajouter à Main fonctionne aussi.
public MainWindow()
{
InitializeComponent();
AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
J'espère que cela t'aides!
requireAdministrator
autorisations et ClickOnce a commencé à se plaindre qu'il ne prend pas en chargerequireAdministrator
. Le problème doit être extrêmement clair. ClickOnce voit le besoin d'élévation dans votre manifeste (qui devient une partie de votre application). Je ne sais pas ce dont vous avez besoin de plus ici ...