Environment.GetFolderPath(... CommonApplicationData)在XP和Server 2003上返回空字符串

时间:2011-08-11 15:42:59

标签: c# windows-services environment-variables

这似乎是完全随机发生的。一分钟程序正在运行,然后我做了一些更改(与程序的这一部分完全无关,我实际改变的只是项目的一个嵌入资源),以下属性现在只返回"\"

public static string ProgramDataDir
{
    //this has always worked on all windows OSes before, but all of a sudden, not so
    //get { return Environment.GetEnvironmentVariable("ProgramData") + @"\"; }

    //I've tried changing it to this, and this doesn't work either - same results
    get { return Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\"; }
}

此属性应该并且始终在XP和Server 2003上返回C:\Documents and Settings\All Users\Application Data。这不再适用于在同一虚拟主机上运行的虚拟2003计算机和虚拟XP计算机。主机对这些环境变量没有任何影响吗?这可能是我的虚拟主机的问题?不幸的是,我没有可用的独立Server 2003或XP机器,我可以安装该软件并运行测试。

注意:我意识到这部分不是一个编程问题,更多的是服务器问题,但由于其余问题的性质,我觉得它仍然适合SO,如果我',请纠正我我错了。

另外,我有一段时间没有触及过这个项目,我很确定我没有更改任何设置,除了程序集版本号,但我不知道也不记得我是否改变了最后一个工作版本之后的任何编译设置或类似设置。这些设置中的任何一种都会对我的应用程序产生这种影响吗?

应用程序作为Windows服务运行,因此使用任何用户特殊文件夹都不适合此应用程序。

1 个答案:

答案 0 :(得分:0)

您的计算机上是否存在该路径,或者是否已将其替换?根据{{​​3}}:

  

如果操作系统没有,则实际上不存在文件夹   创建它,删除现有文件夹,或者文件夹是虚拟文件夹   目录,例如“我的电脑”,它与a不对应   物理路径。

你可以这样吗?