在windows 7中用非管理模式运行的应用程序编写日志文件
Writing a log file with app running in non-admin mode in windows 7
我的应用程序需要编写和维护一个日志文件,并且它不在管理模式下运行。我的问题是,在这种情况下,我的应用程序可以写入什么路径。我怎样才能走那条路?
有两个不错的选择:
-
使用Windows事件日志。您可以轻松地为应用程序创建自己的日志(如果您希望生成大量消息),也可以将消息添加到标准日志中(如果您只希望偶尔生成少量消息)。
由于这是一个内置功能,任何技术人员都会了解它,并能够轻松定位日志文件。它与集中式管理系统的互操作性也很强。
-
写入保存在Application Data目录中的文本文件。这是应用程序应该存储非用户数据文件的地方,因为正如您所提到的,应用程序目录不是您可以拥有写入权限的目录
对于特定计算机特定内容的日志文件,我认为这是本地(非漫游)应用程序数据,因此您需要本地应用程序数据文件夹。我确信有一个Qt包装器,但在Win32中,您将调用
SHGetKnownFolderPath
函数,指定KNOWNFOLDERID
值FOLDERID_LocalAppData
。请记住,此函数分配内存来存储返回的字符串——完成后必须通过调用
CoTaskMemFree
来释放它。样本代码:
// Retrieve the path to the local App Data folder. wchar_t* pszPath = 0; SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &pszPath); // Make a copy of that path. std::wstring path(pszPath); // Free the memory now, so you don't forget! CoTaskMemFree(static_cast<void*>(pszPath));
请参阅SHGetKnownFolderPath API,可能使用FOLDERID_LocalAppData选项。
相关文章:
- 使用VerQueryValue检索应用程序的文件描述
- 在安卓应用程序中使用.exe文件
- 为什么从文件获取图标时应用程序有时会崩溃?
- make 命令创建 .file,但不创建应用程序文件
- 如何在Windows窗体应用程序中打开txt文件并将行导入文本框
- 在不打开应用程序的情况下在MinGW c++中播放声音(.wav)文件
- 将文件从 iOS 应用程序加载到 C++ 对象中/<iostream>iOS 上的问题
- 从Qt应用程序执行MSI文件
- MacOS应用程序文件关联
- Windows 8 应用商店应用程序C++文件访问
- Visual Studio使用多线程DLL发布应用程序文件
- 在应用程序文件夹中安装 C/C++ 库"IGRAPH"
- Qt单一应用程序文件已打开
- 应用程序文件没有在不同的mac上运行
- visualstudio2015在调试期间挂起默认控制台应用程序文件
- Windows 7 x64操作系统下如何确定应用程序文件路径
- 如何在 Visual Studio 2010 中创建代码的"应用程序文件"
- visual studio 2010 - mfcc++参考INI文件在部署后的应用程序文件夹
- android/opencv-从NDK中的应用程序文件夹加载级联文件
- 更改应用程序文件(. c文件)的名称