单击一次临时文件夹

时间:2015-11-05 03:19:57

标签: c# clickonce

我正在使用 ClickOnce 部署的Winforms应用。在clickonce部署中,有两个exe,我将调用viewer.exe和editor.exe。

查看器中有一个选项可将一堆文件转储到临时目录,然后指示editor.exe启动并打开此目录中的所有文件。

我的问题是我找不到ClickOnce文件夹结构中的一个位置,它可以让我创建一个临时文件夹来转储这些文件。每当我尝试在ApplicationDeployment.CurrentDeployment.DataDirectory中创建一个子目录时,我都会收到一条错误消息:

  

[我没有]有权访问该目录。

ClickOnce框架中是否有任何可以创建文件夹以将文件转储到?

的地方

2 个答案:

答案 0 :(得分:2)

  

我没有权限访问该目录。

由于代码访问安全性(CAS)(默认情况下通常会启用),因此ClickOnce应用通常会降低权限。

MSDN:

  

代码访问安全性是.NET Framework中的一种机制,有助于限制代码对受保护资源和操作的访问。您应该为ClickOnce应用程序配置代码访问安全权限,以使用适合应用程序安装程序位置的区域。 Tell me more

您的应用是完全信任还是部分信任应用程序?

尝试将您的应用设置为完全信任

enter image description here

隔离存储

或者,您可能需要考虑隔离存储(IS)来存储用户或应用程序数据。 IS通常无需完全访问CAS即可运行。

e.g。为用户尝试获取当前正在执行的程序集的唯一存储区域:

var storage = IsolatedStorageFile.GetUserStoreForAssembly()

...或者如果你想要一个存储区域而不管用户尝试:

var storage= IsolatedStorageFile.GetMachineStoreForAssembly()

更多

答案 1 :(得分:1)

如果它确实是暂时的,那么你应该可以使用:

System.IO.Path.GetTempPath

并在那里创建一个子目录。