나는 이것이 오래되었다는 것을 알고 있지만 답을 찾기 위해 우연히 발견했습니다. 제 경우에는 게시 기능을 사용하고 있으며 계속 사용해야합니다. 관리자 기능에 대한 액세스 권한도 필요합니다. 따라서 위의 답변 중 어느 것도 나를 위해 일하지 않았습니다.
결국 관리자로 실행되고 있는지 확인하고 그렇지 않은 경우 관리자로 다시 시작하는 방법을 내 응용 프로그램의 맨 처음에 추가했습니다. 이렇게하려면 다음 참조를 추가해야합니다.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
그런 다음 주 메서드가 쉽게 액세스 할 수있는 어딘가에이를 배치해야합니다. WPF를 사용하고 있으므로 MainWindow.xaml.cs에 추가했지만 코드의 초기 단계에 추가 할 수 있습니다. 필요한 경우 이러한 메서드에 "정적"을 추가하는 것을 잊지 마십시오.
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;
}
}
마지막으로 프로그램 시작시 메서드에 대한 참조를 추가합니다. 제 경우에는 MainWindow에 추가했지만 Main에도 추가했습니다.
public MainWindow()
{
InitializeComponent();
AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
도움이 되었기를 바랍니다!
requireAdministrator했고 ClickOnce가 .NET을 지원하지 않는다고 불평하기 시작했습니다requireAdministrator. 문제는 매우 명확해야합니다. ClickOnce는 매니페스트 (응용 프로그램의 일부가 됨)에서 권한 상승의 필요성을 확인합니다. 나는 ... 아니 확실히 무엇보다 당신이 필요 해요