2023. 9. 18. 19:27ㆍJust do IT/C#
업무를 위해 만들어 보고 싶은 프로그램이 있어서 c#으로 작업을 해 보았습니다.
PC에서 작동되고 있는 애플리케이션이 자꾸 셧다운 되는 증상이 발생하여, 프로그램을 자동으로 재시작 시켜 줄 수 있으면 어떨까 하다가 보니, 구글링을 통해 그러한 프로그램을 만들어 배포하시는 분이 계셨습니다. 그런데 조금 더 다른 기능을 넣고 싶어서 직접 만들어 보기로 했습니다. (이 부분은 별도로 포스팅할 예정입니다.)
아무튼 위에서 말한 애플리케이션을 c#을 전혀 모르는 상태에서 구글링을 하면 만들다 보니, 알 수 없는 문제를 자꾸 마주하게 됩니다.
오늘은 만들고 있는 애플리케이션을 시작프로그램으로 등록하여 윈도우 시작시 자동으로 시작되게 하고, 버튼을 클릭시 시작 프로그램에서 해제되는 부분을 진행하였습니다.
이 부분에서 관리자 권한으로 애플리케이션이 실행되어야 한다는 오류 때문에 구글링을 해보니 프로젝트 - 속성 - 보안 탭에서 ClickOnce 보안설정을 누르라는 것이 제일 많이 보였고, 그 다음이 매니페스트 파일을 수정해야 한다는 내용이었습니다.
제 프로젝트에는 아무리 찾아도 보안이라는 메뉴가 없어서 관리자 권한으로 시작하려면 어떻게 해야 하나를 몇시간을 찾아보다 알게 되었습니다. (제가 쓴 시간 만큼 아끼시길 바랍니다.)
※ .NET Core 또는 .NET 5 이상에서는 기본적으로 애플리케이션 매니페스트 파일이 생성되지 않습니다.
그러나 필요하다면 직접 생성하고 프로젝트 파일에 해당 설정을 추가할 수 있습니다.
.NET 6.0 으로 프로젝트를 만들면.. 보안 탭이 나오지 않는 것 같습니다. 저처럼 없는 거 찾느라 시간 허비하지 마십시요;;
.NET 6.0 으로 프로젝트를 시작했는데 관리자 권한이 필요하다면, 보안 탭은 찾지 마시고
1) 프로젝트 디렉토리 내에 app.manifest.xml 파일을 만듭니다.
- 새 항목 추가하기를 눌러서 우측 상단에서 검색을 하시면 됩니다.
2) 아래와 같은 내용으로 app.manifest 파일을 채웁니다.
- Visual Studio 2022 Communation 기준 1)번과 같이 파일을 생성하면 상세하게 설명이 주석으로
되어 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
3) 프로젝트의 .csproj 파일을 열고, <PropertyGroup> 섹션에 다음 줄을 추가합니다.
- Visual Studio 2022 Communation 기준 1)번과 같이 파일을 생성하면 자동으로 추가되어 있으니,
확인합니다.
<ApplicationManifest>app.manifest</ApplicationManifest>
4) 완성된 .csproj파일 예시는 아래와 같습니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<!-- Add this line -->
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
</Project>
5) 변경 사항을 저장하고 프로젝트를 다시 빌드합니다.
위의 과정대로 진행을 하면, 애플리케이션이 관리자 권한으로 실행되도록 설정이 되는 것입니다만,
사용자가 UAC (User Account Control) 대화상자에서 "예"를 클릭하여 승인을 해야만 실제로 관리자 권한으로 실행됩니다.
'Just do IT > C#' 카테고리의 다른 글
[.NET 6.0]Class 참조하기 (0) | 2023.09.25 |
---|---|
[.NET 6.0]Windows Form 시작 위치 설정 및 Form Drag&Drop (0) | 2023.09.20 |
[.NET 6.0]Windows Form 스타일 변경하기 (0) | 2023.09.20 |
[.NET 6.0]프로세스 모니터링 애플리케이션 - (2) Form 디자인 (1) | 2023.09.20 |
[.NET 6.0]프로세스 모니터링 애플리케이션 - (1) 기획하기 (0) | 2023.09.20 |