2011-02-17 58 views
1

我有一个分离的WMI提供程序(Windows服务),它使用位于C:\ ProgramData \ CompanyName文件夹中的文件进行配置。当服务加载时,它使用Environment.GetFolderPath(Enviornment.SpecialFolder.CommonApplicationData)方法来获取路径的C:\ProgramData部分。Environment.GetFolderPath在WMI提供程序中返回null

虽然服务正在运行,但我尝试使用相同的方法调用通过WMI调用写入相同的文件到服务中,但这次失败;返回null。

是否有关于我正在WMI环境中运行的事实导致这种情况发生?

+2

是的,提防的用户帐户。 GetFolderPath对LocalSystem非常敏感。 – 2011-02-17 23:19:16

回答

1

我一直有同样的问题,但也许我可以提供一个解决方案。 稍微不同的用法是试图在Web服务器上获取特殊文件夹来编写临时文件,但确实与运行的用户有问题(在DefualtAppPool域组而不是用户甚至运行)

即使返回空白我的本地赢7机尝试获取

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

但是我还是设法使用 AppDomain.CurrentDomain.GetData 方法来获得我想要的,它有几个不同的选项来查找文件结构不同的文件夹,但而不是被用户基于它的工作原理基于应用程序或我想系统。 我敢肯定它只是为“干净”的一个作为Environment.GetFolderPath方法

http://msdn.microsoft.com/en-us/library/system.appdomain.getdata.aspx

其中一个枚举的必将实现你所寻找的使用方法。

AppDomain.CurrentDomain.GetData("ProgramFiles"); 

或@JohnB

AppDomain.CurrentDomain.GetData("StartMenu"); 
相关问题