我正在使用 ClickOnce 部署的Winforms应用。在clickonce部署中,有两个exe,我将调用viewer.exe和editor.exe。
查看器中有一个选项可将一堆文件转储到临时目录,然后指示editor.exe启动并打开此目录中的所有文件。
我的问题是我找不到ClickOnce文件夹结构中的一个位置,它可以让我创建一个临时文件夹来转储这些文件。每当我尝试在ApplicationDeployment.CurrentDeployment.DataDirectory
中创建一个子目录时,我都会收到一条错误消息:
[我没有]有权访问该目录。
ClickOnce框架中是否有任何可以创建文件夹以将文件转储到?
的地方答案 0 :(得分:2)
由于代码访问安全性(CAS)(默认情况下通常会启用),因此ClickOnce应用通常会降低权限。我没有权限访问该目录。
MSDN:
代码访问安全性是.NET Framework中的一种机制,有助于限制代码对受保护资源和操作的访问。您应该为ClickOnce应用程序配置代码访问安全权限,以使用适合应用程序安装程序位置的区域。 Tell me more
您的应用是完全信任还是部分信任应用程序?
尝试将您的应用设置为完全信任。
或者,您可能需要考虑隔离存储(IS)来存储用户或应用程序数据。 IS通常无需完全访问CAS即可运行。
e.g。为用户尝试获取当前正在执行的程序集的唯一存储区域:
var storage = IsolatedStorageFile.GetUserStoreForAssembly()
...或者如果你想要一个存储区域而不管用户尝试:
var storage= IsolatedStorageFile.GetMachineStoreForAssembly()
答案 1 :(得分:1)