yka*_*kay 5 c++ service winapi environment-variables
我有一个在LocalSystem帐户下运行的Windows服务,我正在尝试访问一些特定于用户的环境变量.当我调用ExpandEnvironmentStrings("%AppData%")时,我得到"C:\ windows\system32\config\systemprofile\AppData\Roaming".
我认为假冒和加载用户配置文件应该解决这个问题,所以我打电话给:
而且,ExpandEnvironmentStrings("%AppData%")返回系统文件夹而不是"C:\ Users\Username\AppData\Roaming"之类的东西.
然后,我搜索了一些更多的东西,并遇到了SHGetFolderPath(CSIDL_LOCAL_APPDATA),它就像一个模仿后冒充的魅力.
我的问题不是我应该做的(即SHGetFolderPath),而是更多关于环境变量如何在服务中起作用的问题.我在想我的问题是:
我的LoadUserProfile()代码仍然缺少某些东西,即使一切都返回成功.我无知的一方想要说服我,理论上,加载用户配置文件应该使ExpandEnvironmentStrings()返回加载的用户的值.
基于一些读数,似乎服务中的环境变量在系统启动时只读取一次(http://support.microsoft.com/kb/887693),因此我的服务只知道系统环境变量.
我倾向于2.但我只需要有人来证实这一点,所以我不会假设有些可能是错误的.
环境变量的文档表明#2是正确的.引用,重点补充:
每个进程都有一个包含一组环境变量及其值的环境块.
MSDN指出要ExpandEnvironmentStringForUser()解决您的原始问题.
| 归档时间: |
|
| 查看次数: |
1351 次 |
| 最近记录: |