具有相同应用程序数据文件夹的两个不同应用程序

本文关键字:应用程序 两个 文件夹 数据 | 更新日期: 2023-09-27 18:35:45

我有两个不同的应用程序需要交换数据。第一个是服务,第二个是 GUI。我想使用应用程序数据文件夹来实现此目的。

有没有办法为这两个应用程序使用 Environment.SpecialFolder.ApplicationData 获得相同的路径?

具有相同应用程序数据文件夹的两个不同应用程序

对于

不同的应用程序,只要它们在同一用户帐户下运行,Environment.SpecialFolder.ApplicationData的路径是相同的。这就是为什么您通常不将数据直接放入此文件夹,而是放入包含公司名称和产品名称的子文件夹中的原因。

您遇到的问题是您的服务在不同的用户下运行。可以使用 Environment.SpecialFolder.CommonApplicationData 获取对所有应用程序和所有用户都相同的路径。为了不与其他应用程序冲突,请将数据存储在带有公司名称的子文件夹中。

    string path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
    path = Path.Combine(path, "MyCompanyName");
    // Use path  to store / read data shared by all your applications

请特别注意计算机上的所有用户共享该文件夹的事实。因此,如果您在不同的用户帐户下运行 GUI 应用程序的多个实例,并且不希望它们共享数据,则不能使用此方法。(除非您付出一些努力来实现一种机制,即每个应用程序实例仅访问它要访问的数据)

但也看看詹姆斯·索普(James Thorpe)所写的内容:通常有更好的方法在同一台计算机上并发运行的不同进程之间交换数据,而不是使用文件。