将文件上传到程序文件\某些商业程序时,拒绝访问该路径

时间:2011-10-22 14:50:30

标签: c# file

我收到错误:

Access to the path 'C:\Program Files (x86)\MetaTrader FIX\experts\indicators\Awesome.ex4' is denied./n   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.File.Create(String path)
   at Iron_loader.Program.Main(String[] args) in C:\Users\Damian\Documents\Visual Studio 2010\Projects\Iron loader\Iron loader\Program.cs:line 55

当我从\ bin \ Debug运行我的exe文件时。 我不知道为什么会这样。在目标目录中没有这样的文件,所以我认为安全性存在问题,因为当我从VS运行我的程序时,管理员一切正常。

我正在尝试将文件上传到其他程序的文件夹(不是我的)。 我该如何复制该文件?

File.Create(newPath);
File.Copy(pathOfFileFromMyDebugDirectory, newPath);

3 个答案:

答案 0 :(得分:2)

检查文件夹的权限。用户没有修改/完全控制权限。

选择文件夹中的属性,然后选择“安全”选项卡,并检查当前用户或应用程序用户的权限。正在运行。

答案 1 :(得分:2)

如果操作系统和WindowsXP一样,环氧树脂不会在C:\ ProgramFilesx86中读写,因为uac。

您必须以管理员权限启动应用程序。

问候。

答案 2 :(得分:1)

...请参阅下面的修改

我认为问题的一部分是“进程”尚未释放文件句柄。试试这个:

using (Stream stream = File.Create(newPath))
{}

File.Copy(pathOfFileFromMyDebugDirectory, newPath);

一旦你点击了使用块中的右括号,就会调用基本流Dispose()方法,并且所有资源 - 包括进程'文件句柄 - 都应该被释放。

修改
你在'File.Create'电话中得到了例外吗?我误读了你给出的错误。如果您在Create()方法中获得异常,则需要确保正确到路径。

我相信,当您纠正权利问题时,可能会获得另一个进程正在使用该句柄的异常。如果是这样,请使用我上面的建议进行修复。