"ClickOnce는 요청 실행 수준 'requireAdministrator'를 지원하지 않습니다."
그래서 저는 많이에 액세스해야하는 애플리케이션을 작성했습니다. 빌드 설정을 건드리지 갑자기 고, 설명이나 이름과 같은 다른 터치를 추가하기 전에 작동하고 싶었습니다.
사라지지 않는 오류가 발생합니다. ClickOnce does not support the request execution level 'requireAdministrator'.
이제이 응용 프로그램에서 ClickOnce를 건드리지 이론합니다. 내가 한 것은 권한을 요청하는 매니페스트 파일을 포함하는 것뿐.
내 문제는 사라지지 않고 내 프로그램을 제거 할 수 있습니다. 해야 할 일에 대한 조언이 있습니까? (참고 : 잠자리에 들려고하니 내일 오후에 확인하겠습니다.)
편집 : 이 의견도 좋은 답변을 제공합니다.
원하든 필요한 기능 든 한 번 클릭하면 "게시"를 클릭 할 때마다 활성화됩니다. "requireAdministrator"를 사용하는 경우 ClickOnce를 사용할 수 없습니다. "게시"할 수 없습니다.
실물 :
보안 탭에서 "ClickOnce 보안 설정 사용"이 선택되어있는 사용 가능합니다. 나는 그것을 확인하지 않는다. 어쨌든 ClickOnce를 중지하면 오류가 발생합니다. 찾는 데 시간이 좀 걸렸습니다 ...
나는 오래된 질문이라는 것을 알고 싶습니다 2 년 후에 여기에 왔습니다.
프로젝트 속성의 보안을 탭하여 문제를 해결할 수 있습니다. 아래 참조 :
게시 마법사 또는 '지금 게시'를 사용하는 경우 한 번 클릭이 자동으로 선택됩니다.
나는 이것이 오래 예는 것을 발견하고 발견을 찾기 위해 우연히했습니다. 제 경우에는 게시 기능을 사용하고 사용하고 있습니다. 관리자 기능에 대한 액세스 권한도 필요합니다. 따라서 위의 답변 중 어느 것도 나를 위해 일하지 않습니다.
결국 관리자로 실행되고 있는지 확인하고 어떤 경우에 다시 시작하는 방법을 응용 프로그램의 시작 부분에 추가했습니다. 이렇게 다음 참조를 추가해야합니다.
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.
}
도움이 되었기를 바랍니다!
이 작업은 "ClickOnce 보안 설정 사용"(설명 된대로 게시하는 동안 "선택 취소"할 수 없기 때문에)을 선택한 다음 "부분 신뢰 응용 프로그램입니다"를 선택하여 수행 할 수 있습니다. 드롭 다운 메뉴에서 "로컬 인트라넷"이 자동으로 선택됩니다.
변경 사항을 저장하고 응용 프로그램을 게시하고 완료하십시오. :-)
app.Manifest 파일을 살펴보면 다음과 같이 표시됩니다.
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
주석에 지침이 있지만 "requireAdministrator"를 삭제하고 이것을 삽입하면 문제가 해결됩니다.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
동일한 문제가 있습니다. " ClickOnce 보안 설정 사용 "을 선택 취소하여 해결합니다 . Visual Studio 에서이 옵션을 설치면 프로젝트를 마우스 오른쪽 단추로 클릭합니다. ==> properties ==> 보안 선택 ==> ClickOnce 보안 설정 사용 (이 옵션은 이미 확인 확인을 취소하고 문제가 해결되었습니다.)
다음은 VB.NET 용 코드 스 니펫입니다.
If Not New WindowsPrincipal(WindowsIdentity.GetCurrent).IsInRole(WindowsBuiltInRole.Administrator) Then
Process.Start(New ProcessStartInfo With { _
.UseShellExecute = True, _
.WorkingDirectory = Environment.CurrentDirectory, _
.FileName = Assembly.GetEntryAssembly.CodeBase, _
.Verb = "runas"})
편집 :하지만 이런 방식으로 배포하면 일부 AV 소프트웨어가 코드를 차단합니다.
다만
Imports System.security
U는 오류가 실행됩니다.
'IT' 카테고리의 다른 글
Rails html.erb 파일에서 줄을 주석 처리하는 방법은 무엇입니까? (0) | 2020.09.13 |
---|---|
Coffeescript — 자체 시작 익명 함수를 만드는 방법은 무엇입니까? (0) | 2020.09.13 |
Vim에서 기본 글꼴 크기를 어떻게 설정합니까? (0) | 2020.09.13 |
Nexus에서 아티팩트를 배포 할 때 오류 발생 (0) | 2020.09.13 |
루비 온 레일즈의 여러 열에 대한 보안 (0) | 2020.09.13 |