UnauthorizedAccessException-拒绝访问路径

时间:2019-04-03 13:36:12

标签: c# io windows-10

我的客户在Windows 10桌面上远程运行c#引导程序。

有一家公司的用户都遇到相同的问题。没有其他公司报告此问题,并且我们无法在测试环境中重现该问题。

我无法确定问题的原因。

问题在于,每个用户都被迫手动启动C#程序,因为当用户登录其PC时,该程序无法自动启动。

当前自动启动程序的机制是在安装过程中在“启动”文件夹中提供一个快捷方式。

C:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

C#程序只是一个引导程序,用于启动Java Swing UI,因此它不能作为Windows服务运行(据我所知),因为它会产生交互式显示。

该程序将连续运行,除非它被用户明确杀死或注销,重新启动PC等。

当引导程序在启动过程中尝试删除和复制可执行文件时,发生错误。

我的猜测是文件正在使用中或用户无权删除文件。

程序已安装在用户的主目录(C:\Users\[Username])

用户的IT管理员已确认用户具有对子文件夹和可执行文件的完全控制权和所有权限(特殊权限除外)。

该用户不是管理员用户。

System.UnauthorizedAccessException: Access to the path 'C:\Users\username\UI\jre\bin\filename.exe' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalDelete(String path, Boolean checkHost)
   at UI.Client.RetryDeleteFile(String filename) in Z:\Perforce\Head\main\src\dotnet\UIStartUp\UI\Client.cs:line 852
2019-04-02 06:59:05.SSS [ERROR] UI.Client:852: Not able to delete file (retrying): C:\Users\username\UI\jre\bin\username@company.com.exe: 

正在寻找有关如何查明并解决此问题的建议。

负责用户桌面的IT管理员不是很配合,而且由于我们在黑暗中拍摄,因此正忍无可忍。

我想我们可以提供一个安装选项来避免删除文件,但这会禁用一项功能,通过该功能我们无需进行安装即可远程升级软件。

1 个答案:

答案 0 :(得分:0)

您可以尝试在删除之前或复制之后设置以下代码

File.SetAttributes(dest, FileAttributes.Normal);

例如

File.SetAttributes(dest, FileAttributes.Normal);
File.Copy(file, dest, true);

引用自Why is access to the path denied?