我有一個非常舊的應用程序,現在需要對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