哪里是存储与XP,Vista和Windows 7兼容的日志文件的安全位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哪里是存储与XP,Vista和Windows 7兼容的日志文件的安全位置?相关的知识,希望对你有一定的参考价值。

我有一个需要写出日志的winforms应用程序。该应用程序还需要在没有UAC警告和使用非管理员帐户的情况下运行。

在不违反默认安全设置的情况下,我可以在哪里编写日志?此外,这必须适用于Windows XP,Vista和7。

如果所有用户都可以写入同一组日志文件,则为额外点。

答案

你不能(不应该)对路径进行硬编码。而是通过调用SHGetFolderPath来询问Windows在哪里存储它,该SHGetFolderPath可用于返回当前用户(或所有用户)AppData目录的位置。

MSDN文章,用C解决方案:http://support.microsoft.com/kb/310294

有用的Delphi示例:http://delphi.about.com/od/kbwinshell/a/SHGetFolderPath.htm

请注意,对路径执行一次性查询,转换为绝对字符串并将其存储在您的设置中是危险的。因为Windows可以改变它。他们可以加入域,升级窗口等,Windows可能确实会移动你的文件。如果你然后指向旧位置,而不再询问“这个文件夹在哪里”,你就会中断。去过也做过...

另一答案

使用SHGetFolderPath,您可以选择使用每用户或全局日志文件目录。如果您使用CSIDL_COMMON_APPDATA,那么:“此信息不会漫游,并且可供使用该计算机的任何人使用。”这听起来像你想要的。

以上是关于哪里是存储与XP,Vista和Windows 7兼容的日志文件的安全位置?的主要内容,如果未能解决你的问题,请参考以下文章

Windows XP 与 Vista/7 上的 MS Crypto API 行为

如何制作与 Vista/7 和 XP 兼容的图标?

获取 XP、Vista 和 7 的 windows 序列号

Vista 和 Windows 7 中的 OLEDB JET 错误,而不是 XP

我如何在 Windows(xp、vista、7)欢迎屏幕或锁定屏幕(如 VNC 或 Dame Ware)中进行交互

在 win xp Vista 和 Windows 7 上保存程序数据的位置