我有一个非常旧的应用程序,现在需要对Windows Server 2008友好。它是一个用作单例的用户应用程序。它使用注册表的HKLM部分来读取和写入配置,并创建日志文件。可能使用提升的权限创建的日志文件
主要问题:如何使UAC的应用程序适合当前最佳实践?
我最初的方法是运行应用程序不升级,如果配置需要更改用户手动重新启动它升高,重新配置,并重新启动到非升高。问题是日志文件可以创建为高级,然后非高级应用程序无法写入。可能的解决方法:
- 不要在提升模式下做任何暗示写入日志文件的事情。但是如何检测应用程序是否处于提升模式?
- 即使在提升模式下也可以使用非提升权限创建日志文件。怎么样?
- 如果在打开现有日志文件时访问被拒绝,则尝试创建另一个日志文件。
- 一直运行提升。
第一种选择是迄今为止最好看,但如何检测海拔?也许还有其他的选择?也许有一些完全不同的方法?如果可能的话,我不想过多地更改代码。
配置数据确实需要共享,即使有多个用户。日志文件被写入到路径处于配置中的文件夹,并且路径通常会像C:\ Log一样简单,所以虚拟化应该不成问题(但某些日志文件当前可能具有不同的权限)。我使用的是C++,所以不是使用.NET,而是使用Windows SDK。这个链接似乎很有希望:http://goo.gl/DevVT – Dialecticus 2010-11-10 11:20:55
所以你应该分区并将write-config-data放入提升的东西中。 – 2010-11-10 11:49:13