Program Files 폴더의 프로그램이 자체 디렉토리에 파일을 생성할 수 없습니다.

Program Files 폴더의 프로그램이 자체 디렉토리에 파일을 생성할 수 없습니다.

슈퍼유저에 대해 질문하는 것은 이번이 처음이므로(스택 오버플로 및 슈퍼유저에 대해 자주 언급하지만) 실수를 하거나 질문이 명확하지 않은 경우 양해해 주시고 필요에 따라 오류를 수정하거나 명확하게 설명하겠습니다.

저는 MyApp이라는 응용 프로그램을 개발하고 관련 종속성(폴더 및 파일)과 함께 기본 실행 파일을 C:\Program Files (x86)\MyAppFolder\.

문제는 런타임 중에 자체 디렉토리인 MyAppFolder폴더에 로그 등과 같은 파일을 생성해야 한다는 것입니다. 좀 조사한 후에는 이것이 관리자로 실행되고 있지 않기 때문이라고 생각했습니다(내 사용자는 관리자입니다). 또는 오히려 관리자만 에 쓸 수 있기 때문이라고 \Program Files생각합니다. 내 응용 프로그램을 관리자로 실행하면 필요한 파일과 폴더를 쓸 수 있습니다.

하지만 이상적으로는 앱이 자체 폴더에 쓸 수 있어야 하지 않나요? 관리자 권한으로 실행되지 않는 경우에도 마찬가지입니까? 내가 여기서 무엇을 놓치고 있는 걸까요?

미리 감사드립니다.

답변1

Windows에는 "프로그램 자체 폴더"라는 개념이 없습니다.

존재하는 개념은 "프로그램의 현재 폴더"이며, 기본적으로 프로그램이 실행된 폴더입니다. 프로그램이 소유한 권한은 프로그램이 위치한 곳이 아니라 프로그램을 실행한 사용자 계정에서 나옵니다.

이는 프로그램이 Program Files에서 실행될 때 기본적으로 관리자 계정이 아닌 귀하의 계정으로 실행된다는 것을 의미합니다. 따라서 우연히 위치한 폴더에 쓸 수 있는 권한이 없습니다.

프로그램이 보호되지 않은 폴더에 파일을 쓰는 것이 합리적입니다. 일반적인 장소는 C:\Users\USERNAME\AppData\Local환경 변수에서도 사용할 수 있는 내부에 자신만의 폴더를 만드는 것이지만 %LOCALAPPDATA%, 이는 사용자가 선택하는 어느 곳이든 가능합니다.

관련 정보