SpecialFolder.MyDocuments在控制台应用程序中提供正确的值,但在Windows服务上没有

我的机器上运行了一个Windows服务。 当我做的时候

Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments) 

它给了我空字符串,但当我在控制台应用程序中执行相同的操作时,它为我提供了MyDocuments文件夹的正确位置。

关于它为什么会发生的任何想法?

这是因为当您作为控制台运行应用程序时,您正在以用户身份登录计算机,因此可以访问“我的文档”。 当Windows服务运行时(默认情况下),它将作为本地系统运行,该系统没有“我的文档”文件夹。 这是因为Windows服务在计算机启动时运行,并且不需要用户登录。

问题是,你想用你的“我的文档”文件夹做什么,你的Windows服务可能想访问一个非用户依赖的位置?

最后,要清楚地想象一下,如果您在计算机上安装了10个用户。 当没有人登录时,Windows服务会使用哪个用户的“我的文档”?