Visual Studio 2010文件权限

本文关键字:权限 文件 2010 Studio Visual | 更新日期: 2023-09-27 18:01:36

有一个小程序,它应该打开文件,然后输出到控制台添加行号。问题是,无论程序是从命令控制台还是从IDE运行,它都会抛出关于文件权限的异常。

我将可执行文件和应该被读取的文件(简单的TXT文件)移动到几个目录(我的文档,temp等)以Admin身份运行console,以Admin身份运行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);
        }
    }
}

Visual Studio 2010文件权限

检查以下可能性之一:

  • 文件未在任何其他窗口/应用程序中打开
  • 运行你的应用程序。exe文件as Administrator(可选的额外,启用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)