UAC和日志文件管理

时间:2016-03-09 16:10:53

标签: wpf manifest uac trust

我正在编写一个引用log4Net的WPF .NET应用程序(fwk 4.0),必须安装在Windows 7/8/10 64位操作系统的“Program Files(x86)”目录中。

应用程序创建的应用程序日志是在'Program Files(x86)'的安装子目录中创建的.txt文件

此应用程序还在SQL Server CE 4.0上使用相同的子目录。

C:\ Program Files(x86)\ MYAPP \ APP1 \ APP1.txt

C:\ Program Files(x86)\ MYAPP \ APP1 \ CEDatabase.sdf

应用程序由本地管理员安装。

要启动应用程序,UAC会提示标准用户使用提升的访问令牌(管理员权限)来运行应用程序,因为它不会以其他方式启动(我认为ACL未被授予创建和写入日志)。

WPF应用程序构建不包含应用程序清单。

我的客户对标准用户无法在没有UAC提升的情况下启动应用程序这一事实感到沮丧。此外,它希望继续安装在'Program Files(x86)'。

我可以做些什么来管理这种情况?

1 个答案:

答案 0 :(得分:0)

我强烈建议将日志文件写入安装应用程序的相同位置,而是写入一个标准公共位置,您可以通过环境变量访问这些位置。

有关如何在Log4Net中设置此内容的详细信息,请参阅此链接:How to specify common application data folder for log4net?

要记录以避免UAC限制的两个常见位置是: CommonApplicationData(https://msdn.microsoft.com/en-us/library/windows/desktop/aa367992(v=vs.85).aspx),这是所有用户都可以写入的位置,因此如果您想要一个公共的日志记录位置,无论谁登录到Windows并运行您的应用程序,您都可能希望使用它。

LocalAppData(https://msdn.microsoft.com/en-us/library/windows/desktop/aa369768(v=vs.85).aspx),它是为当前登录用户指定的位置。这将允许您将来自不同Windows用户的日志文件彼此分开。

我不确定您是否对SQL Server CE数据库的写入存在同样的问题。我以前跟随UAC使用的模式是在Program Files下安装所有静态文件,然后在上述2个文件夹中的一个下安装所有数据,具体取决于应用程序数据和日志记录是按用户还是按用户 - 安装。