我使用.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,Boolean overwrite)
解决方法
安装应用程序时,安装程序通常会要求管理权限.如果用户选择“是”,则程序将运行并具有比普通用户具有的更多种路径的读写访问权限.如果情况是安装程序没有要求管理权限,则可能只是ClickOnce在某种提升的权限下自动运行.
我建议您改为写入本地appdata文件夹,但如果您认为您真的想要写入与应用程序完全相同的目录,则必须首先使用管理员权限运行您的应用程序.
要使您的应用程序始终要求管理员权限,您可以修改应用程序的清单文件,并将requestedExecutionLevel标记的level属性设置为requireAdministrator:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
您可以在How do I force my .NET application to run as administrator?中阅读更多内容