c# - 系统.UnauthorizedAccessException : Access to the path "..." is denied

标签 c# wpf clickonce

我使用单击一次安装完成了 .net 的 C# wpf 安装。一切正常。然后我有以下代码,它是已安装程序的一部分:

String destinationPath = System.Windows.Forms.Application.StartupPath + "\\" + fileName;
File.Copy(path, destinationPath, true);
this.DialogResult = true;
this.Close();

但是我得到这个错误:

System.UnauthorizedAccessException: Access to the path C:\user\pc\appdata\local\apps\2.0....... is denied.

at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost) at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)

这是权限错误还是我需要调整我的代码?

令我困惑的是,为什么用户可以使用单击一次安装程序到该目录而没有任何问题,但上传文件到它却不起作用?

最佳答案

安装应用程序时,安装程​​序通常会询问管理权限。如果用户选择"is",程序将运行并具有比普通用户拥有的更多路径的读写权限。如果安装程序没有要求管理权限,则可能只是 ClickOnce 在某种提升的权限下自动运行。

我建议您改为写入本地 appdata 文件夹,但如果您真的想写入与您的应用程序完全相同的目录,则必须首先以管理员权限运行您的应用程序。

要使您的应用程序始终请求管理员权限,您可以修改应用程序的 list 文件并将 requestedExecutionLevel 标记的 level 属性设置为 requireAdministrator:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

您可以在 How do I force my .NET application to run as administrator? 中阅读更多内容

关于c# - 系统.UnauthorizedAccessException : Access to the path "..." is denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534782/

相关文章:

clickonce - 如何禁用 ClickOnce 消息 : "verifying application requirements"

.NET ClickOnce 签名导致 "Unknown Publisher"

c# - Html.CheckBox 返回值不正确/错误

WPF ListBox WrapPanel 剪辑长组

visual-studio-2008 - 对动态加载的程序集使用 ClickOnce

WPF XAML - 行根本不显示

wpf - 有没有办法让 DynamicResource 对于 ResourceDictionary 中的 Freezable 是动态的?

c# - 使用 .NET 的 RegEx 问题

c# - 新的 MVC View ,每次都会出现 404,即使使用正确的 Controller

c# - 在更改第一个 ddl 时使用 jquery ajax 绑定(bind)下拉列表