2013-02-28 2 views
0

파일을 열고 콘솔에 출력하여 줄 번호를 추가하는 작은 프로그램이 있습니다. 문제는 프로그램이 IDE의 명령 콘솔에서 실행되는지 여부에 관계없이 파일 권한과 관련하여 예외가 발생한다는 것입니다.파일에 대한 Visual Studio 2010 사용 권한

실행 파일과 읽을 파일 (간단한 TXT 파일)을 여러 디렉터리 (내 문서, 임시 파일 등)로 이동하여 관리 콘솔로 실행하고 Visual Studio를 관리자로 실행하고 두 파일에 모든 사용 권한을 부여했습니다. ,하지만 항상 예외를 throw합니다. 가장 이상한 일은 1 ~ 2 주 전에 시행 착오를 통해 해결책을 모색했지만 그 사실을 기억할 수 있습니다.

다음
Exception: System.UnauthorizedAccessException: Access to the path 'C:\Users\Nena 
d\documents\visual studio 2010\Projects\Listing 10.6\Listing 10.6\bin\Debug\prog 
ram.cs' is denied. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I 
nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o 
ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea 
n useLongPath) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, 
FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean 
bFromProxy) 
    at System.IO.FileStream..ctor(String path, FileMode mode) 
    at ListFile.Main(String[] args) in C:\Users\Nenad\documents\visual studio 201 
0\Projects\Listing 10.6\Listing 10.6\Program.cs:line 22 


Press any key to continue . . . 

입니다 코드 :

// ListFile.cs - program to print a listing to the console 
//----------------------------------------------------------- 

using System; 
using System.IO; 

class ListFile 
{ 
    public static void Main(string[] args) 
    { 
     try 
     { 

      int ctr = 0; 
      if (args.Length <= 0) 
      { 
       Console.WriteLine("Format: ListFile filename"); 
       return; 
      } 
      else 
      { 
       FileStream fstr = new FileStream(args[0], FileMode.Open); 
       try 
       { 
        StreamReader t = new StreamReader(fstr); 
        string line; 
        while ((line = t.ReadLine()) != null) 
        { 
         ctr++; 
         Console.WriteLine("{0}: {1}", ctr, line); 
        } 
       } 
       catch (Exception e) 
       { 
        Console.WriteLine("Exception during read/write: {0}\n", e); 
       } 
       finally 
       { 
        fstr.Close(); 
       } 
      } 
     } 

     catch (System.IO.FileNotFoundException) 
     { 
      Console.WriteLine("ListFile could not find the file {0}", args[0]); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("Exception: {0}\n\n", e); 
     } 
    } 
} 
+0

Windows -explorer는 솔루션이있는 폴더로 이동합니다. 그리고 읽기 전용 속성을 설정 해제하십시오. – Tomtom

+0

@Tomtom 그는 파일을 읽고 내용을 출력하고 있습니다. – dutzu

답변

1

확인 이러한 가능성 중 하나를

  • 파일이 다른 창에 열려 있지 않은/응용 프로그램
  • 다음

    는 예외

  • 응용 프로그램 .exe 파일 실행 as Administrator (op UAC를 활성화하면 응용 프로그램에 높은 권한이 필요하다는 요청이 표시되고 명시 적으로 권한을 부여해야합니다. Windows8에서는 UAC를 사용하지 않도록 설정하면 이러한 팝업이 표시되지 않지만 응용 프로그램에 권한이 상승되지는 않으므로 Win8) 해당 파일 파일이 특정 폴더에 아니라고
  • 확인을위한 Everyone-
  • 수동으로 설정 읽을 권리 (하지만 난 이미했다고 생각,하지만 단지 C 생성해야합니다 : \ 온도를 거기에 넣어)

주의 - 예외는 간단한 텍스트 파일이 아닌 C:\Users\Nena d\documents\visual studio 2010\Projects\Listing 10.6\Listing 10.6\bin\Debug\prog ram.cs에 액세스하는 데 문제가 있음을 보여줍니다!

실수로 코드에 잘못된 경로가 제공 될 수 있습니다. 그리고 Users 폴더는 액세스 권한을 상승해야하는 특수한 폴더이므로 전체 실행 파일 + readableFile을 문제가 발생하지 않는 일반 폴더 (예 : 위에서 언급 한 c : \ temp와 같음)로 이동하는 것이 더 좋습니다.

+0

다른 눈보다 좋은 것은 없습니다 :) 다른 디렉토리 (C : \ temp 포함)로 이동하거나 읽을 파일이나 실행할 프로그램에 대한 권한을 변경해도 문제가 해결되지 않았지만 확장 기능을에서 Program.cs -> Program.txt가 트릭을했습니다. (내 견해로 .cs는 텍스트 편집기로 텍스트 파일을 열 수 있으므로 분명히 Windows 7 용입니다). 의견을 보내 주셔서 감사합니다. 문제가있는 곳을 확인하는 데 도움이되었습니다. 감사합니다, Nenad –