2012-03-12 4 views
0

설치 프로그램에 포함되어있는 빈 텍스트 파일을 쓰려고하는데 다음과 같은 오류가 발생합니다.C#에서 텍스트 파일에 쓰려고 할 때 UnauthorizedAccessException이 발생했습니다.

System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Hex Technologies\wamplocation.txt' is denied. 
내 설치 프로그램을 통해 설치되어 일단 파일의 권한을 것 같다,하지만 어떻게이 파일이 설치되면 완전히 수정 될 파일을 설정할 수 있습니다

! 이것이 C#을 통해 할 수 있습니까?!

편집;

  wamp_url = openFileDialog1.FileName.ToString(); 
      String EnviromentPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
      StreamWriter outfile = new StreamWriter(EnviromentPath + @"\Hex Technologies\wamplocation.txt"); 
      outfile.Write(wamp_url); 
      outfile.Close(); 
+1

Window 7? 그렇다면 프로그램 파일이 아닌 ProgramData에 작성해야합니다. –

답변

7

수정 가능한 데이터 파일을 Program Files 경로에 저장하면 안됩니다. Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) 또는 Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Program Files \ ... 경로는 일반 사용자가 Win7 +에서 수정하지 못하도록 보호되어 있습니다. 그 보호를 우회하려고 시도하는 것은 나쁜 생각 일 것입니다.

+0

감사합니다. 아래 오류에 대한 답변을 볼 수 있습니까? – r0bb077

2

likelyhood는 UAC가 당신의 길을 가고 있음을 나타냅니다.

이상적으로 프로그램이이 위치에 쓰여서는 안되며,이 수정 파일은 설치 프로세스 중에 수정되어야하며 상승 된 권한을 실행하고 있는지 확인해야합니다.

이 파일을 런타임에 수정해야하는 경우에는 사용자 데이터에 대해 % appdata % 또는 프로그램 파일 대신 프로그램 데이터에 대해 % programdata %를 사용해야합니다.

+0

고마워,하지만 '이제는 파일이 다른 프로세스에서 사용 중입니다.'라는 메시지가 나타납니다. 내 코드가 위와 같이 삽입되어 내 코드가 어떻게 보이는지 보여줍니다! – r0bb077

+0

응용 프로그램 데이터에 "Hex Technologies"폴더가 있습니까? –

+0

예, 스트림 작가에게 입력 한 문자열을 두 번 확인했으며 .txt 파일의 URL과 일치합니다. – r0bb077

관련 문제