2013-02-28 89 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