"ClickOnce는 요청 실행 수준 'requireAdministrator'를 지원하지 않습니다.'"
그래서 저는 레지스트리에 접속해야 하는 어플리케이션을 쓰고 있었습니다.설명이나 이름 등의 다른 터치를 추가하기 전에 작업을 하고 싶었기 때문에 빌드 설정을 터치하지 않았습니다.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ClickOnce does not support the request execution level 'requireAdministrator'.클릭원스(Click)원스(ClickOnce)]를 선택합니다.제가 한 일은 이 권한을 요청하는 매니페스트 파일을 포함시킨 것뿐입니다.
현재 문제는 이 오류가 해소되지 않고 프로그램을 컴파일할 수 없다는 것입니다. 하니 오후에 하겠습니다.저는 이제 자러 가기 때문에 내일 오후에 확인하겠습니다).
편집: 이 코멘트는 좋은 답변이기도 합니다.
한 번 클릭하면 "게시"를 클릭할 때마다 활성화됩니다."requireAdministrator"를 사용하는 경우 ClickOnce를 사용할 수 없으므로 프로젝트를 "게시"할 수 없습니다.
오리지널:
보안 탭에서 "클릭원스 보안 설정 활성화"가 선택되어 있는 것으로 확인되었습니다.확인은 안 했는데.어쨌든 ClickOnce를 끄면 오류가 발생합니다.찾는 데 시간이 좀 걸렸는데...
오래된 질문인 건 알지만 2년 후에 여기 왔기 때문에
프로젝트 속성의 보안 탭에서 ClicKOnce를 비활성화하여 문제를 해결할 수 있습니다. 아래를 참조하십시오.

게시 마법사 또는 '지금 게시'를 사용하는 경우 클릭 한 번 확인란이 자동으로 선택됩니다.
이게 오래된 건 알지만 답을 찾다가 우연히 발견했어요.저 같은 경우에는 퍼블리시 기능을 사용하고 있기 때문에 계속 사용할 필요가 있습니다.또, 관리 기능에의 액세스도 필요합니다.그렇기 때문에 위의 답변 중 어느 것도 나에게는 통하지 않았다.
어플리케이션이 관리자로 실행되고 있는지 확인하고 실행되지 않은 경우 관리자 권한으로 재시작하는 메서드를 어플리케이션의 맨 처음에 추가했습니다.이를 수행하려면 다음 참조를 추가해야 합니다.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
그런 다음 주 방법이 쉽게 접근할 수 있는 곳에 보관해야 합니다.저는 WPF를 사용하고 있기 때문에 MainWindow.xaml.cs에 추가했습니다만, 코드의 어느 시점부터라도 WPF를 추가할 수 있습니다.필요에 따라서, 이러한 방법에 「스태틱」을 추가하는 것만을 잊지 말아 주세요.
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;
}
}
마지막으로 프로그램 시작 시 메서드에 대한 참조를 추가합니다.저 같은 경우에는 Main Window에 추가했는데 Main works에도 추가가 되어 있습니다.
public MainWindow()
{
InitializeComponent();
AdminRelauncher(); //This is the only important line here, add it to a place it gets run early on.
}
이게 도움이 됐으면 좋겠네요!
.NET Core 및 의 경우.넷 5 이상
20대 때 우연히 발견하게 되면 위와 같이 작업하도록 변경하는 방법이 있습니다.NET Core 및.넷 5 이상
변경이 필요한 기능은 AdminRelauncher뿐이며 대신 다음과 같이 표시됩니다.
private static void AdminRelauncher()
{
if (!IsRunAsAdmin())
{
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Assembly.GetEntryAssembly().Location.Replace(".dll", ".exe");
proc.Verb = "runas";
try
{
Process.Start(proc);
Environment.Exit(0);
}
catch (Exception ex)
{
Console.WriteLine("This program must be run as an administrator! \n\n" + ex.ToString());
}
}
}
큰 변화는 어플리케이션을 항상 이용할 수 있는 것은 아니라는 지적에 따른 것입니다.그래서 환경.exit(0)로 치환할 수 있으며 파일명은 .exe를 .dll로 치환해야 합니다.이것은 현재 테스트되고 있습니다.넷 6
를 사용하고 있는 유저는, 「클릭 원스 시큐러티 설정 유효화」의 선택을 해제하고, 검색한 방법을 시험합니다.
먼저 app.manifest를 요청해 둡니다.실행항목 수준:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
그런 다음 Program.cs 파일을 다음과 같이 편집합니다.
using System;
using System.Diagnostics;
using System.Reflection;
using System.Security.Principal;
using System.Windows.Forms;
다음과 같은 주요 방법을 재구성합니다.
static void Main()
{
var wi = WindowsIdentity.GetCurrent();
var wp = new WindowsPrincipal(wi);
bool runAsAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator);
if (!runAsAdmin)
{
// It is not possible to launch a ClickOnce app as administrator directly,
// so instead we launch the app as administrator in a new process.
var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);
// The following properties run the new process as administrator
processInfo.UseShellExecute = true;
processInfo.Verb = "runas";
// Start the new process
try
{
Process.Start(processInfo);
}
catch (Exception)
{
// The user did not allow the application to run as administrator
MessageBox.Show("Sorry, but I don't seem to be able to start " +
"this program with administrator rights!");
}
// Shut down the current process
Application.Exit();
}
else
{
// We are running as administrator
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
Windows 10과 Visual Studio 2019에서 동작합니다!
이 작업은 "ClickOnce 보안 설정 사용"을 선택한 다음 "부분 신뢰 응용 프로그램"을 선택하여 수행할 수 있습니다.「로컬 인트라넷」은, 지극히 정상적인 드롭 다운 메뉴로 자동적으로 선택됩니다.
변경 내용을 저장하고 응용 프로그램을 게시하고 done-skis. :-)
같은 문제가 있습니다.Visual Studio에서 이 옵션을 찾으려면 [Enable ClickOnce security settings]체크박스를 끄면 됩니다.프로젝트 == > [ properties >[보안==]> [클릭원스 보안 설정 활성화]를 선택합니다(이 옵션은 이미 선택되어 있기 때문에 체크박스를 끄면 문제가 해결됩니다).
여기 VB용 코드 조각이 있습니다.그물
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-Software가 코드를 차단합니다.
이걸 마주친 사람이라면, 결국엔 날 위해 일하게 된 걸 기여해야겠다고 생각했어요.
네, [Enable ClickOnce security settings]옵션은 [Build]> [ Publish ]를 선택하면 자동으로 다시 체크됩니다.
저는 '게시'할 필요가 없습니다.사용자를 위해 스케줄된 작업을 작성하는 단순한 휴대용 .exe입니다.관리자로 로그인한 경우에도 작업이 상승하도록 해야 했습니다.
그래서 저는 방금 \bin\에서 최신 .exe를 가져왔습니다.릴리스하면 고객의 시스템에 도입됩니다.
예상대로 동작했습니다.즉, UAC가 유효/최고 설정으로 설정되어 있는 시스템에서 .exe를 실행하면 .exe에 '쉴드'가 붙어 있습니다.또, Administrator 로 로그인하고 있어도, .exe가 상승해 UAC 프롬프트가 표시됩니다.
이제 작은 작업 스케줄러 앱에서 '접근 거부' 오류 없이 작업을 생성할 수 있습니다(이전에는 .exe를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 클릭해야만 해결 가능).
당신의 앱을 보세요.매니페스트 파일에는 다음과 같은 내용이 표시됩니다.
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
코멘트에는 순서가 기재되어 있습니다만, 「require Administrator」를 삭제하고, 이것을 삽입하는 것만으로 문제가 해결되었습니다.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
그저.
Imports System.security
그러면 오류가 발생하지 않고 응용 프로그램이 admin으로 실행됩니다.
언급URL : https://stackoverflow.com/questions/11023998/clickonce-does-not-support-the-request-execution-level-requireadministrator
'programing' 카테고리의 다른 글
| WPF - 표준 버튼을 사용하여 위 화살표와 아래 화살표 버튼을 만듭니다. (0) | 2023.04.10 |
|---|---|
| Excel 수식에서 빈 셀 반환 (0) | 2023.04.10 |
| UIButton의 텍스트 변경(프로그래밍 스위프트) (0) | 2023.04.10 |
| Excel 워크북이 이미 열려 있는지 감지 (0) | 2023.04.10 |
| NSString 값을 NSData로 변환하려면 어떻게 해야 합니까? (0) | 2023.04.10 |