2013-02-28 78 views
0

權限有哪些是應該打開文件,然後輸出到控制檯添加行號的小程序。問題是無論程序是否從IDE的命令控制檯運行,它都會拋出有關文件權限的異常。Visual Studio 2010和中的文件

我將可執行文件和應該讀取的文件(簡單的TXT文件)移動到多個目錄(我的文檔,臨時文件等),以管理員身份運行控制檯,以管理員身份運行Visual Studio,同時爲這兩個文件,但它總是拋出異常。最奇怪的是,一兩週前我通過反覆試驗來解決問題,但我可以'記住它。

這裏是例外:

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 2013-02-28 07:49:03

+0

@Tomtom他只從文件中讀取並輸出內容。 – dutzu 2013-02-28 07:50:10

回答

1

檢查這些可能性之一:

  • 文件不在任何其他窗口中打開/應用
  • 運行您的應用程序.exe文件as Administrator(op在啓用UAC的情況下,您將看到應用程序需要提升特權並明確給予它們的請求,在Windows8禁用UAC時只隱藏這些彈出窗口,但這並不意味着應用程序將提升權限,因此如果使用Win8 )
  • 手動設置讀取權限Everyone該文件
  • 檢查該文件是不是在一個特殊的文件夾(但我想你已經做到了,但只是爲了確保創建C:\ TEMP,並把它放在這裏)

注意 - 異常顯示訪問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的一個文本文件),它不是。 感謝您的評論,它幫助我瞭解問題所在。 問候, 內納德 – 2013-02-28 08:05:58