我正在开发一个ActiveX,当启用UAC时,它可能会在Windows7中运行。
为了在客户遇到使用ActiveX的问题时提供支持的能力,今天,我正在写一个由我的代码打开和管理的日志文件。 问题是当启用UAC时,我没有创建/修改文件的权限。
非常感谢。
答案 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
希望有所帮助