从ActiveX写入日志文件

时间:2011-10-25 12:38:04

标签: internet-explorer activex

我正在开发一个ActiveX,当启用UAC时,它可能会在Windows7中运行。

为了在客户遇到使用ActiveX的问题时提供支持的能力,今天,我正在写一个由我的代码打开和管理的日志文件。 问题是当启用UAC时,我没有创建/修改文件的权限。

  1. 启用UAC时是否有任何可以写入的位置(已尝试%temp%和%appdata%但没有工作)。
  2. 是否有任何Windows API可用于创建/写入通过UAC的日志文件?
  3. 还有其他想法吗?
  4. 非常感谢。

2 个答案:

答案 0 :(得分:3)

尝试%temp%\low

windows有时会将日志重定向到此文件夹

答案 1 :(得分:3)

您可以使用SHGetKnownFolderPath获取FOLDERID_LocalAppDataLow(通常为C:\ Users \ Your User \ AppData \ LocalLow)的路径,然后您可以将其写入。

此API面临的挑战是它在Windows XP中不可用;所以,如果您使用的是XP,则必须使用不同的API,它只会为您提供Local Settings \ Application Data文件夹;但是,您只能使用一个或另一个API,具体取决于您的Windows版本定义的方式。解决方法是手动加载shell32.dll库并搜索入口点,如果不起作用,则回退到xp版本。这就是我为FireBreath所做的(我用于我的activex浏览器插件)。 Sample code here

有关详细信息,请参阅Finding Low Integrity Write Locations

希望有所帮助