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);
}
}
}
检查以下可能性之一:
- 文件未在任何其他窗口/应用程序中打开
- 运行你的应用程序。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)