我有一个解耦的WMI提供程序(Windows服务),它配置了一个位于C:\ ProgramData \ CompanyName文件夹中的文件。当服务加载时,它使用Environment.GetFolderPath(Enviornment.SpecialFolder.CommonApplicationData)
方法来获取路径的C:\ProgramData
部分。
当服务正在运行时,我尝试使用相同的方法调用通过对服务的WMI调用来写入同一文件,但这次失败;返回null。
有没有关于我现在在WMI环境中运行导致这种情况发生的事实?
答案 0 :(得分: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");