C++ 在何处存储可能由低完整性进程和Windows服务生成的日志文件?
简言之:Windows中是否有一个标准的文件夹,1)可由低完整性进程写入2)独立于运行进程的用户C++ 在何处存储可能由低完整性进程和Windows服务生成的日志文件?,c++,windows,winapi,logging,C++,Windows,Winapi,Logging,简言之:Windows中是否有一个标准的文件夹,1)可由低完整性进程写入2)独立于运行进程的用户 关于日志文件的位置,堆栈溢出有很多问题,但我认为我的问题有点不同 我的应用程序有两个主要组件:ActiveX(在IE下运行,因此完整性较低)和Windows服务。它们都会生成日志,我希望将所有内容都存储在同一个位置 我尝试使用SHGetKnownFolderPath(FOLDERID\u LocalAppDataLow)。对于ActiveX来说这很好,但是Windows会为我的服务返回以下文件夹:
关于日志文件的位置,堆栈溢出有很多问题,但我认为我的问题有点不同 我的应用程序有两个主要组件:ActiveX(在IE下运行,因此完整性较低)和Windows服务。它们都会生成日志,我希望将所有内容都存储在同一个位置 我尝试使用
SHGetKnownFolderPath(FOLDERID\u LocalAppDataLow)
。对于ActiveX来说这很好,但是Windows会为我的服务返回以下文件夹:C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\
。这是不好的,原因有很多
我也不能使用%AllUsersProfile%
或%APPDATA%,因为低完整性进程在那里没有写权限
我曾考虑让我的服务查找当前登录的用户并手动访问LocalLow文件夹,但其中可能有0个或多个,因此这也是一个问题。我仍然会选择%ALLUSERSPROFILE%。在该路径下,通常会为公司名称创建一个文件夹,然后为产品创建一个文件夹。常规非管理员用户帐户可以写入%ALLUSERSPROFILE%,但对于您的特定场景,如果默认ACL不够好,您可以在安装期间始终修改特定应用程序在目录上的权限
我们已经部署了与您非常相似的东西(IE中运行的ActiveX控件以及一组服务和常规应用程序),在那里我们可以毫无问题地存储日志 系统日志呢?您需要写入您自己的单独文件吗?@Acme:temp文件夹是否也依赖于用户名?在我的Win7 x64机器上,%temp%等于“C:\Users\pfranco\AppData\Local\temp”。@Cody Gray:使用系统日志意味着重写我的整个日志基础结构,所以这是不可能的。