C 寫Windows系統日誌(EventLog)

2022-04-28 08:23:48 字數 1892 閱讀 5625

.net framework 2.0開始,可以使用

event

log建構函式在windows系統日誌

裡新增內容,一切看上去是如此的簡單。只是

……會涉及到一點點的許可權問題,必須要注意一下。

使用event

log時,涉及到乙個叫做「**」(

source

)的引數(一般用來記錄訊息的出處)。比如將該引數設為「

myexe

」,那麼寫系統日誌的時候,

eventlog

.writeentry

就會去登錄檔裡找這個叫做「

myexe

」的節點,如果找不到,那它會建立乙個

「myexe

」節點作為**,然後開始寫入系統日誌。的確是很人性化的處理辦法。只是,要在登錄檔裡建立乙個節點,沒有相當的許可權是不行的,比如說系統管理員的許可權。偏偏寫系統日誌的通常是一些服務賬戶(例如:

net service)

,這些賬戶往往不會有這麼大的許可權。

解決方案的話。

1. 2. 

**中模擬管理員許可權(個人不是很喜歡,因為要輸入密碼……)

下面是使用

event

log的乙個例子。

using

system;

using

system.diagnostics;

using

system.collections.generic;

using

system.security;

using

system.text;

namespace

//////

//////

///向日誌管理器寫入系統日誌

//////

訊息事件**

///要在訊息事件中寫入的資訊

///訊息事件型別

///訊息事件的事件id。(0~65535)

///系

統日誌儲存空

間不足時///

作業系統日誌權

限不足時

static

public

void writeentry(string source, string message, logtype type, int eventid)

eventlog.writeentry(source, message, getlogentrytype(type), eventid, category);

}catch (securityexception)

eventlog.writeentry(source, message, getlogentrytype(type), eventid, category);}}

}///

///向日誌管理器寫入系統日誌

//////

訊息事件**

///要在訊息事件中寫入的資訊

///訊息事件的事件id。(0~65535)

static

public

void writeentry(string source, exception ex, int eventid)}}

writeentry(source, sb.tostring(), logtype.error, eventid);

}///

///將logtype型別

轉換成eventlogentrytype型別

//////

logtype

///eventlogentrytype

///轉換錯誤時

丟擲的例外型別

static

private

eventlogentrytype getlogentrytype(logtype type)

else}}

}

C 寫系統日誌

using system using system.collections.generic using system.linq using system.text using system.diagnostics 建立系統事件日誌分類 註冊事件源 比如說這個日誌 於某乙個應用程式 日誌名稱 事件列表...

C 實現寫系統日誌的方法

using system using system.collections.generic using system.linq using system.text using system.diagnostics namespace consoleapp 建立系統事件日誌分類 註冊事件源 比如說這個...

Windows系統日誌審計

實驗背景針對網路中windows伺服器攻擊經常發生的情況,管理員需要在伺服器工作出現異常情況後,進行快速的響應,並且需要及時定位受到入侵的服務,發現黑客入侵的手段,找到系統的脆弱點並且加以修補,windows server 提供的日誌工具可以協助我們完成相關操作。windows系統中日誌分為三種,分...