본문 바로가기

flutter

flutter windows 관리자 권한 획득 방법(feat. LNK1327 에러)

어제 하루를 flutter windows 빌드 에러 삽질로 날렸다.

flutter 프로그램으로 서비스 시작, 정지를 하려고 하는데 그러려면 관리자 권한을 받아와야 했다.

그때 발생한 에러.

 

분명히 디버그 모드로 켜놓고 핫리로드로 개발할 때는 잘 되었었는데, 빌드할 때는 안 되더라.

디버그 종료하고 다시 디버그를 하니 동일 증상 발생..

 

 

flutter 윈도우 빌드할 때 생기는 오류인데 아무리 구글링을 해보고 찾아봐도 나오지가 않음..

C++ 에러다 보니까 더 안되고 미쳐버리겠는 상황이었는데 드디어 답을 찾았다.

 

해당 버그는 관리자 권한을 요청하려고 할 때 생긴 버그인데, 처음 flutter에 관리자 권한을 주려고 구글링해서 찾아보니 이런 답을 발견했다.

 

https://github.com/flutter/flutter/issues/98416

 

how run flutter app on windows with admininstrator rights? · Issue #98416 · flutter/flutter

I write a flutter windows app, I want to launch flutter app start on windows with admininstrator rights, how to get admininstrator rights?

github.com

 

보면 .windows/runner/runner.exe.manifest 파일에 이 부분을 추가하라고 되어있는데

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
       </requestedPrivileges>
    </security>
  </trustInfo>

 

오히려 추가하고 나니까 LNK1327 에러가 발생하더라.

그래서 한참 삽질을 하고 또 구글링을 하고 반나절을 날린거 같다.

visual studio 설치할 때 뭔갈 빼먹은가 싶어서 다시 설치해보기도 하고 계속 검색을 해봤다.

 

결국 위 github 질문글에서 CMakerLists.txt 파일에 추가로 작성하라는 내용을 작성하고 빌드를 하니 잘 되더라

 

/windows/runner/CMakeLists.txt 파일의 하단에 이 코드를 넣어준다.

SET_TARGET_PROPERTIES(PROPERTIES LINK_FLAGS "/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\" /SUBSYSTEM:WINDOWS")

 

처음부터 위 아래를 다 넣었어야지.. manifest 오류인줄 알고 manifest 만 한참 보고 삽질했다.