2010-12-20 6 views
1

내 응용 프로그램은 서버를 연결하거나 연결을 끊을 때 로그 파일을 만듭니다. 이것은 잘 승리 XP에서 작동합니다.표준 사용자로 파일을 만들거나 쓸 수 없습니다.

Vista 및 Win 7에서 관리자로 실행하는 동안 아무런 문제가 없습니다. Vista 나 Win7에서 표준 사용자로 실행하면 로그 파일을 만들지 못하고 이것이 UAC를위한 것이라는 것을 알고 있습니다.

하지만 내 응용 프로그램이 관리자 권한으로 실행되도록하려면 어떻게해야합니까? 항상 관리자 권한으로 실행되도록 응용 프로그램을 설치하는 동안 레지스트리 항목을 추가해야합니까?

답변

4

add a manifest 응용 프로그램이 실행될 때 UAC 고도가 필요하지만 실제로는 수행하지 않는 것보다 더 자주 수행 할 수 있습니다.

더 많은 가능성이 있습니다. 사용자 모드 응용 프로그램은 현재 사용자 폴더 또는 C:\Users\Public 폴더에만 기록해야하며 로그와 같은 항목은 C:\Users\Current User Name\Application Data\Your Program Name\에 있어야합니다. ApplicationData 경로를 얻으려면 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)을 사용하십시오. 또는 모든 사용자가 파일을 공유하도록하려면 Environment.SpecialFolder.CommonApplicationData을 사용하십시오.

+0

하지만 다른 Windows 사용자의 로그 및 구성 (대부분 로그 파일)이 필요하지 않습니다. – Simsons

+1

아, 그 경우 System.Environment.SpecialFolder.CommonApplicationData가 있어야합니다.이 위치는 있어야합니다. 모든 표준 사용자가 쓸 수 있습니다. 이론적으로 여러 사용자가 동시에 응용 프로그램을 실행할 수 있기 때문에 (Win7에 사용자 전환이 있으므로) 여러 작성자 (FileShare 열거 참조)를 허용하고 동시 쓰기 가능성을 처리해야합니다. 그렇지 않으면 열 필요가 있습니다 각 쓰기에 대한 파일을 닫습니다 (perf 함축을 가질 수 있음). –

+1

당신은 앱을 표준 사용자로 실행하고 Paul은 훌륭한 조언을 해주었습니다. –

관련 문제