[EventLog][Tips] イベントソースを削除する


EventLogクラスのDeleteEventSourceメソッドを使用すると、イベントソースを削除することができます。

また、Deleteメソッドを使用すると、イベントログを削除することができます。引数には削除するログの名前を指定します。

イベントソースに登録されているログ名はLogNameFromSourceNameメソッドで取得できます。引数にはイベントソース名を指定します。

下記は、イベントソースを削除する例です。

テキストボックスに入力されたイベントソースを削除します。

VBの例

' [削除]ボタンクリック時の処理
Private Sub btnDelete_Click(sender As System.Object, e As System.EventArgs) Handles btnDelete.Click
    '★★★削除するイベントログがあるか確認する★★★
    If System.Diagnostics.EventLog.SourceExists(txtSource.Text) Then
        '指定したソースが登録されているログを削除する
        Dim logName As String = System.Diagnostics.EventLog.LogNameFromSourceName(txtSource.Text, ".")

        '★★★イベントログの削除★★★
        System.Diagnostics.EventLog.DeleteEventSource(txtSource.Text)
        System.Diagnostics.EventLog.Delete(logName)
    Else
        MessageBox.Show("指定したイベントソースは存在しないため削除できません!!")
    End If
End Sub

C#の例

// [削除]ボタンクリック時の処理
private void btnDelete_Click(object sender, EventArgs e)
{
    // ★★★削除するイベントログがあるか確認する★★★
    if (System.Diagnostics.EventLog.SourceExists(txtSource.Text))
    {
        // 指定したソースが登録されているログを削除する
        string logName = System.Diagnostics.EventLog.LogNameFromSourceName(txtSource.Text, ".");

        // ★★★イベントログの削除★★★
        System.Diagnostics.EventLog.DeleteEventSource(txtSource.Text);
        System.Diagnostics.EventLog.Delete(logName);

        MessageBox.Show("イベントソースを削除しました!!");
    }
    else
    {
        MessageBox.Show("指定したイベントソースは存在しないため削除できません!!");
    }
}

[EventLog][Tips] イベントソースを作成する


EventLogクラスのCreateEventSourceメソッドを使用すると、イベントソースを作成することができます。

第1引数にはソース名を、第2引数にはログ名を指定します。

下記は、イベントソースを作成する例です。

下記はイベントソースを作成する例です。

テキストボックスに入力されたソース名、ログ名でイベントソースを作成します。

VBの例

' [作成]ボタンクリック時の処理
Private Sub btnCreate_Click(sender As System.Object, e As System.EventArgs) Handles btnCreate.Click
    '作成しようとしているイベントソースの存在を確認する
    If Not System.Diagnostics.EventLog.SourceExists(txtSource.Text) Then
        '★★★イベントソースを作成する★★★
        System.Diagnostics.EventLog.CreateEventSource(txtSource.Text, txtLog.Text)

        MessageBox.Show("イベントソースを作成しました!")
    Else
        MessageBox.Show("作成しようとしているイベントソースはすでに存在します!!")
    End If
End Sub

C#の例

// [作成]ボタンクリック時の処理
private void btnCreate_Click(object sender, EventArgs e)
{
    // 作成しようとしているイベントソースが存在しないことを確認する
    if (!System.Diagnostics.EventLog.SourceExists(txtSource.Text))
    {
        // ★★★イベントソースを作成する★★★
        System.Diagnostics.EventLog.CreateEventSource(txtSource.Text, txtLog.Text);

        MessageBox.Show("イベントソースを作成しました!");
    }
    else
    {
        MessageBox.Show("作成しようとしているイベントソースはすでに存在します!!");
    }
}

[EventLog][Tips] 指定したイベントソースが存在するかを確認する


ErrorLogコンポーネント(または)クラスで、イベントソースが存在するかどうかを確認するには、SourceExistsメソッドを使用します。

引数には確認するイベントソース名を指定します。

またSourcExistメソッドは、コンピューターを指定してイベントソースの存在を確認することができます。この場合には第1引数にイベントソース名を、第2引数にコンピューター名を指定します。

下記は、ローカルコンピューターで指定したイベントソースが存在するかを確認する例です。

“Application”というイベントソースが存在するかを確認し、存在するかどうかのメッセージを表示します。

VBの例

' ["Security"の存在を確認]ボタンクリック時の処理
Private Sub btnExistSecurity_Click(sender As System.Object, e As System.EventArgs) Handles btnExistSecurity.Click
    '★★★"Security"の存在を確認★★★
    If System.Diagnostics.EventLog.SourceExists("Application") Then
        MessageBox.Show("存在します")
    Else
        MessageBox.Show("存在しません")
    End If
End Sub

C#の例

// ["Security"の存在を確認]ボタンクリック時の処理
private void btnExistSecurity_Click(object sender, EventArgs e)
{
    // ★★★"Security"の存在を確認★★★
    if ( System.Diagnostics.EventLog.SourceExists("Application") )
        MessageBox.Show("存在します");
    else
        MessageBox.Show("存在しません");

}

[EventLog][Tips] イベントログの表示名称を取得する


EventLogコンポーネント(またはクラス)で、イベントログの表示名称を取得するにはLogDisplayNameプロパティを使用します。

Windows Vista以降では、標準ユーザーはセキュリティログへのアクセス許可がありません。

このため、標準ユーザーとして実行している場合にセキュリティログ内のイベントの表示名にアクセスしようとすると、SecurityExceptionが発生することに注意してください。

下記は、イベントログの表示名称を取得して表示する例です。

VBの例

' [ログ表示名称を取得]ボタンクリック時の処理
Private Sub btnDispLogName_Click(sender As System.Object, e As System.EventArgs) Handles btnDispLogName.Click
    'イベントログを検索しオブジェクトの配列を作成する
    Dim evlogs As System.Diagnostics.EventLog()
    evlogs = System.Diagnostics.EventLog.GetEventLogs()

    For Each log As System.Diagnostics.EventLog In evlogs
        Try
            'ログの表示名称を取得し、リストボックスに表示する
            lstLog.Items.Add(log.LogDisplayName)
        Catch ex As Exception

        End Try
    Next log
End Sub

C#の例

// [ログ表示名称を取得]ボタンクリック時の処理
private void btnDispLogName_Click(object sender, EventArgs e)
{
    // イベントログを検索しオブジェクトの配列を作成する
    System.Diagnostics.EventLog[] evlogs = System.Diagnostics.EventLog.GetEventLogs();


    foreach (System.Diagnostics.EventLog log in evlogs)
    {
        try
        {
            //ログの表示名称を取得し、リストボックスに表示する
            lstLog.Items.Add(log.LogDisplayName);
        }
        catch (Exception)
        {

        }
    }
}

[EventLog][Tips] ログ名称を取得する


EventLogコンポーネントを使用すると、イベントログの操作を行うことができます。

ログ名称を取得する場合は、GetEventLogメソッドを使用してイベントログを検索し、Logプロパティでログ名所を取得します。

下記は、ログ名称を取得する例です。

VBの例

' [ログ名称を表示]ボタンクリック時の処理
Private Sub btnDispLogName_Click(sender As System.Object, e As System.EventArgs) Handles btnDispLogName.Click
    'イベントログを検索しオブジェクトの配列を作成する
    Dim logs As System.Diagnostics.EventLog()
    logs = Diagnostics.EventLog.GetEventLogs()

    For Each log As System.Diagnostics.EventLog In logs
        'ログ名称を取得し、リストボックスに表示する
        lstLog.Items.Add(log.Log)
    Next log
End Sub

C#の例

// [ログ名称を表示]ボタンクリック時の処理
private void btnDispLogName_Click(object sender, EventArgs e)
{
    // イベントログを検索しオブジェクトの配列を作成する
    System.Diagnostics.EventLog[] evlogs = System.Diagnostics.EventLog.GetEventLogs();

    foreach (System.Diagnostics.EventLog log in evlogs)
    {
        //ログ名称を取得し、リストボックスに表示する
        lstLog.Items.Add(log.Log);
    }
}