我有两个需要交换数据的不同应用程序。第一个是服务,第二个是GUI。 我想为此目的使用ApplicationData文件夹。
有没有办法使用Environment.SpecialFolder.ApplicationData
为这两个应用程序获取相同的路径?
答案 0 :(得分:2)
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所写的内容:通常有更好的方法在同一台计算机上同时运行的不同进程之间交换数据而不是使用文件。