回答(26)
2 years ago
我也遇到了问题,因此我在这篇文章上磕磕绊绊 . 我在复制/删除之前和之后添加了以下代码行 .
Delete
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
Copy
File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);
2 years ago
UnauthorizedAccessException 表示以下四种情况之一:
来电者没有所需的权限 .
该文件是正在使用的可执行文件 .
Path是一个目录 .
Path指定了只读文件 .
2 years ago
这是一个老问题,但我在搜索时碰到了它 . 事实证明我在SaveAs的保存路径中缺少实际的文件名组件...
string uploadPath = Server.MapPath("~/uploads");
file.SaveAs(uploadPath); // BAD
file.SaveAs(Path.Combine(uploadPath, file.FileName)); // GOOD
2 years ago
当用户尝试连接到您的网站时,IIS会将连接分配给 IUSER_ComputerName 帐户,其中ComputerName是运行IIS的服务器的名称 . 默认情况下, IUSER_ComputerName 帐户是Guests组的成员 . 该组有安全限制 . 尝试对该文件夹进行IUSER_ComputerName的大访问
Here是关于IIS安全性的非常好的描述答案
希望这可以帮助
2 years ago
右键单击Visual studio并单击 Run as Administrator
2 years ago
我收到了错误,因为我没有意识到目标应该是一个文件 . 我有一个文件夹作为第二个参数(在cmd中工作) . 我得到 Unhandled Exception: System.UnauthorizedAccessException: Access to the path is denied. 因为C# File.Move 想要一个文件,不仅仅是第一个参数,而是第二个参数,所以如果你把一个目录作为第二个参数,当你有一个名为 c:\crp 时,它会尝试写一个像 c:\crp 这样的文件 c:\crp .
这将是 incorrect File.Move(args[0],"c:\\crp");
所以,这将是 correct File.Move(args[0],"c:\\crp\\a.a");
File.Copy 也一样
2 years ago
如果这是出现此问题的IIS网站,请检查该站点或应用程序使用的应用程序池的高级设置的Identity属性 . 您可能会发现它已设置为ApplicationPoolIdentity,在这种情况下,这是必须有权访问该路径的用户 .
或者您可以使用旧样式并简单地将Identity设置为Network Service,并为Network Service用户提供对该路径的访问权限 .
2 years ago
操作系统因I / O错误或特定类型的安全错误而拒绝访问时引发的异常 .
我碰到了同样的事情 . 检查以确保该文件不是隐藏的 .
2 years ago
您需要修改您尝试从中删除/保存到的文件夹的权限 . 右键单击包含文件夹,然后使用“安全”选项卡允许您的应用程序运行的用户的修改权限 .
2 years ago
我得到了这个错误并在一瞬间解决了它 . 不知道为什么我的所有文件夹都是只读的,我取消了只读并应用它 . 但是,它仍然是只读的 . 所以我将文件移动到根文件夹中,它的工作原理 - 太奇怪了 .
2 years ago
我在共享服务器上新移动的网站上遇到了同样的问题 . 解决了通过Web主机面板(DotNetPanel)设置true“允许写入权限” . 因此,如果您在查看所有代码之前都在共享服务器中,请查看服务器配置并节省大量时间 .
2 years ago
请注意,如果您尝试从代码中访问共享文件夹路径,则不需要通过安全选项卡向physicial文件夹提供适当的权限 . 您还需要通过“共享”选项卡与相应的应用程序池用户“共享”该文件夹
2 years ago
检查文件属性 . 如果选中只读,则取消选中它 . 这是我在UnauthorizedAccessException中的个人问题 .
2 years ago
我正面临这个错误,因为
有时当我 Combine 带有文件名的路径和 FileName = ""
它成为 Path Directory 而不是 file 这是一个问题mentioned above
所以你必须检查 FileName 喜欢这个
if(itemUri!="")
File.Delete(Path.Combine(RemoteDirectoryPath, itemUri));
2 years ago
当操作系统因I / O错误或安全性错误而拒绝访问时,将引发UnauthorizedAccessException异常 .
如果您尝试访问文件或注册表项,请确保它是 not read-only .
2 years ago
删除文件时我遇到了确切的错误 . 它是在服务帐户下运行的Windows服务,即使它具有对文件夹的完全控制权,也无法从共享文件夹中删除.pdf文档 .
对我有用的是导航到共享文件夹>高级>共享>添加的安全选项卡 .
然后,我将服务帐户添加到管理员组,应用更改,然后服务帐户就可以对该文件夹中的所有文件执行所有操作 .
2 years ago
当我的窗口服务开始抛出异常时,我也遇到了这个问题
System.UnauthorizedAccessException: Access to the path "C:\\Order\\Media
44aa4857-3bac-4a18-a307-820450361662.mp4" is denied.
因此,作为解决方案,我检查了与我的服务相关联的用户帐户,如下面的屏幕截图所示
所以在我的情况下它是 NETWORK SERVICE
然后转到 folder properties 以检查相关用户帐户是否也存在于其权限选项卡下 . 它在我的情况下失踪了,当我添加它并解决了我的问题 .
有关更多信息,请查看以下屏幕截图
2 years ago
对我来说同样的问题,我指的是文件夹而不是文件 .
所以在路径中确保给出路径文件名
System.IO.File.WriteAllBytes("path", bytearray);
2 years ago
在服务器上部署后尝试执行此操作时,我也遇到了同样的问题:
dirPath = Server.MapPath(".") + "\\website\\" + strUserName;
if (!Directory.Exists(dirPath))
{
DirectoryInfo DI = Directory.CreateDirectory(dirPath);
}
string filePath = Server.MapPath(".") + "\\Website\\default.aspx";
File.Copy(filePath, dirPath + "\\default.aspx", true);
File.SetAttributes(dirPath + "\\default.aspx", FileAttributes.Normal);
我在IIS中授予了包括管理员在内的其他组的权限,我的问题得到了解决 .
2 years ago
我发现这个错误可能发生在DESIGN MODE而不是?执行模式...如果您正在执行某些操作,例如创建需要访问.INI或.HTM文件(配置文件,帮助文件)的类成员,您可能不希望初始化声明中的项目,但稍后将其初始化在FORM_Load()等...初始化时...使用保护IF语句:
/// FORM: BasicApp - Load
private void BasicApp_Load(object sender, EventArgs e)
{
// Setup Main Form Caption with App Name and Config Control Info
if (!DesignMode)
{
m_Globals = new Globals();
Text = TGG.GetApplicationConfigInfo();
}
}
这将使MSVS Designer在设计模式下不会尝试创建INI或HTM文件 .
2 years ago
当我尝试在移动或创建文件夹后非常快速地重命名文件夹时,我抛出了这个错误 .
一个简单的 System.Threading.Thread.Sleep(500); 解决了它:
void RenameFile(string from, string to)
{
try
{
System.IO.File.Move(from, to)
}
catch
{
System.Threading.Thread.Sleep(500);
RenameFile(from, to);
}
}
2 years ago
在我的特殊情况下,我反复创建和删除10000个文件夹 . 在我看来,问题在于,虽然方法 Directory.Delete(path, true) 返回,但是底层OS机制可能仍然是从磁盘中删除文件 . 当我在删除旧文件夹后立即开始创建新文件夹时,其中一些文件夹仍处于锁定状态,因为它们尚未完全删除 . 我收到System.UnauthorizedAccessException:"Access to the path is denied" .
在 Directory.Delete(path, true) 之后使用 Thread.Sleep(5000) 解决了这个问题 . 我绝对同意这不安全,我不鼓励任何人使用它 . 我希望在这里有一个更好的方法来解决这个问题,以改善我的答案 . 现在我只想知道为什么会发生这种异常 .
class Program
{
private static int numFolders = 10000;
private static string rootDirectory = "C:\\1";
static void Main(string[] args)
{
if (Directory.Exists(rootDirectory))
{
Directory.Delete(rootDirectory, true);
Thread.Sleep(5000);
}
Stopwatch sw = Stopwatch.StartNew();
CreateFolder();
long time = sw.ElapsedMilliseconds;
Console.WriteLine(time);
Console.ReadLine();
}
private static void CreateFolder()
{
var one = Directory.CreateDirectory(rootDirectory);
for (int i = 1; i <= numFolders; i++)
{
one.CreateSubdirectory(i.ToString());
}
}
}
2 years ago
首先检查路径是否在驱动器号后面缺少冒号(:)字符 . 如果冒号没有丢失,则可以检查是否为该路径授予了访问/写入权限 . 我有同样的问题,我只是错过了冒号,许可,其他一切都很好 .
C:\folderpath
会工作正常,但是,
C\folderpath .........(missing colon)
会给你访问拒绝错误 .
2 years ago
我试图使用System.IO.File.OpenWrite(path)
并且它不起作用,因为我只是将OpenWrite()传递给目录的路径,但它需要一个路径到你想要写的文件 . 因此,包含最终filename.extension的完整路径需要传递到OpenWrite以避免UnauthorizedAccessException
2 years ago
对于那些试图制作UWP(通用Windows)应用程序的人来说,文件权限受到更多限制,一般来说默认是拒绝 . 它还取代了系统用户权限 . 您基本上只能访问其中的文件
您的安装位置
您的AppData位置
通过File或Folder选择器选择的文件
App Manifest中要求的位置
2 years ago
如果您的安全文件功能很有可能阻止您的操作 . 这是一种勒索软件保护形式,它带有一些更高级的版本 .
请务必授予您的申请在BitDefender中访问并再试一次 .