单击一次临时文件夹

Click once temporary folder

我正在开发使用 ClickOnce 部署的 Winforms 应用程序。在 clickonce 部署中,有两个 exe,我称之为 viewer.exe 和 editor.exe。

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

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

[I don't] have permissions to access that directory.

ClickOnce 框架中是否有任何地方可以让我创建一个文件夹来转储文件?

如果真的是临时的,那么你应该可以使用:

System.IO.Path.GetTempPath

并在其中创建一个子目录。

I don't have permissions to access that directory.

由于通常默认启用的 代码访问安全性 (CAS),ClickOnce 应用程序通常会减少权限。

MSDN:

Code access security is a mechanism in the .NET Framework that helps limit the access that code has to protected resources and operations. You should configure the code access security permissions for your ClickOnce application to use the zone appropriate for the location of the application installer. Tell me more

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

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

独立存储

或者,您可能需要考虑使用独立存储 (IS) 来存储用户或应用程序数据。 IS 通常无需完全访问 CAS 即可工作。

例如要为当前正在执行的程序集获取与用户相关的唯一存储区域,请尝试:

var storage = IsolatedStorageFile.GetUserStoreForAssembly()

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

var storage= IsolatedStorageFile.GetMachineStoreForAssembly()

更多