我已閱讀關於安全和註冊表項的其他問題,沒有任何東西幫助我解決特定的用例場景。C#EventLog.Delete訪問被拒絕
這裏是我的情況:
我正在嘗試做
我想,在代碼中,刪除Windows事件日誌。
的問題
當執行功能時,收到一個System.ComponentModel.Win32Exception。異常消息是「訪問被拒絕」。
如何我這樣做目前
我使用,我寫了一個模仿功能,圍繞EventLog.Delete功能包,它丟棄我到具有完全訪問的EventLog註冊表配置單元用戶上下文。隨後我感興趣的日誌也可以完全訪問此特定用戶。
我的問題
爲什麼我收到「訪問被拒絕」如果我下運行的用戶(通過模擬)具有完全訪問日誌中的問題?我測試了我的模擬功能,並且按照我寫的其他代碼的預期工作。我不明白爲什麼我會因此拒絕訪問。
在我的模擬功能的另一種情況下,它工作得很好,例如,如果我試圖寫入文件,運行該程序的用戶上下文沒有寫入權限,那麼我將無法寫入到文本文件,但是如果我使用我的模擬放入確實具有寫訪問權限的用戶上下文,那麼它工作得很好(我可以寫入文件)。所以我只是不明白爲什麼相同的概念不能應用於註冊表項。
我在這裏錯過了什麼?
守則
當SW-測試是我用於測試目的創建了一個用戶,它具有完全訪問我們試圖刪除的註冊表的權限。
[TestMethod]
public void DeleteEventLog_ValidatedUser_DeleteLog()
{
using (new Impersonator(Environment.UserDomainName, "sw-test", "pswd"))
{
Logging logging = new Logging();
logging.DeleteEventLog("testLog");
}
}