当上传文件到程序文件一些商业程序时,访问路径被拒绝
本文关键字:文件 程序 访问 路径 拒绝 | 更新日期: 2023-09-27 18:12:19
我得到一个错误:
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
当我运行我的exe文件从'bin'Debug。我不知道这是为什么。在目标目录中没有这样的文件,所以我认为这是安全问题,因为当我从VS以管理员身份运行我的程序时,一切正常。
我正在尝试上传文件到其他程序的文件夹(不是我的)。我怎样才能复制那个文件?
File.Create(newPath);
File.Copy(pathOfFileFromMyDebugDirectory, newPath);
检查文件夹的权限。用户没有修改/完全控制权限。
选择文件夹上的属性,然后选择安全选项卡并检查当前用户或您的应用程序正在运行的用户的权限。
如果操作系统为WindowsXP及以下,环氧树脂将不会读写在C: ' ProgramFilesx86中,因为uac.
您必须以管理员权限启动应用程序。
问候。
…参见编辑
我认为部分问题是"进程"还没有释放文件句柄。试试这个:
using (Stream stream = File.Create(newPath))
{}
File.Copy(pathOfFileFromMyDebugDirectory, newPath);
只要你在using块中击中右括号,基流Dispose()
方法就会被调用,所有资源——包括进程的文件句柄——都应该被释放。
编辑
您是否在` File。创建的电话吗?我误解了你给出的错误。如果您在Create()方法中得到异常,那么您需要确保正确地将写入路径。
我相信,当您纠正权利问题时,您可能会得到一个异常,该句柄正在被另一个进程使用。