【问题标题】:SpecialFolder.MyDocuments giving correct value in a console application but not on a Windows ServiceSpecialFolder.MyDocuments 在控制台应用程序中给出正确的值,但在 Windows 服务中没有
【发布时间】:2013-06-29 20:47:24
【问题描述】:

我的机器上正在运行一个 Windows 服务。当我做一个

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

它给了我空字符串,但是当我在控制台应用程序中做同样的事情时,它给了我 MyDocuments 文件夹的正确位置。

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

【问题讨论】:

    标签: c# windows-services environment-variables


    【解决方案1】:

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

    问题是,您想对“我的文档”文件夹做什么,而您的 Windows 服务可能想要访问不依赖于用户的位置?

    最后,为了清楚起见,想象一下如果您在计算机上设置了 10 个用户。在无人登录的情况下,Windows 服务会使用哪个用户的“我的文档”?

    【讨论】:

    • 这个服务是别人的代码。我认为当他部署它时,他会从 services.msc 更改登录用户。我想我问这个问题是愚蠢的。不过谢谢!
    • 一点也不傻,出于安全原因,用户经常会被更改,但您需要确定服务正在做什么以及应该在哪里读/写,然后从那里开始。
    • 本地系统是否总是在C:\WINDOWS\system32\config\systemprofile\Documents 上运行?任何返回此路径的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多