*******************************************
イベントログに出力する
*******************************************
Public Class Form1

  Private Sub Form1_Load(ByVal sender As System.Object,ByValeAsSystem.EventArgs) Handles MyBase.Load
   'テスト用にイベントログエントリに付加するデータを適当に作る
    Dim mybyte() As Byte = New Byte() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    Dim eventid As Integer = 1
    Dim category As Short = 1000

   System.Diagnostics.EventLog.WriteEntry("Sample_OutputEventViewer","イベントログに書き込む文字列",EventLogEntryType.Information,_
                       eventid,category,mybyte)


    ''Imports System.Diagnostics
    ''が宣言されているものとする。

    ''EventLogオブジェクトの作成
    'Dim elog As New EventLog()
    ''コンピュータ名を設定する
    'elog.MachineName = "."
    ''ログの名前を設定する
    'elog.Log = "MyLog"
    ''ソース名を設定する
    'elog.Source = "MySource"
    ''イベントログに書き込む
    'elog.WriteEntry("イベントログに書き込む文字列")

  End Sub
End Class



*******************************************
Windowsサービスを作成する
*******************************************

http://msdn2.microsoft.com/ja-jp/library/d56de412.aspx

注意:Windows XPSP2でサンプルを作成したところ、サービス起動ユーザをLocalServiceではダメだった。
(System.Security.SecurityExceptionが発生)
AccountプロパティはLocalSystemで対応。


*******************************************
VB.NET Tips
*******************************************
VB6でサポートされていた文字列固定長配列は
VB.NETではサポートされていません。
もし使いたい場合はVBFixedStringAttributeを使用します。
試した限りでは構造体の中でしか使用できないようです。
普通の変数としては宣言できません。



*******************************************
レジストリから値を取得する
*******************************************
Imports Microsoft.Win32

Module Module1

' Class1 の概要の説明です。
Sub Main()
' 操作するレジストリ・キーの名前
Dim rKeyName As String = "SOFTWARE\Microsoft\.NETFramework"
' 取得処理を行う対象となるレジストリの値の名前
Dim rGetValueName As String = "InstallRoot"

' レジストリの取得
Try
' レジストリ・キーのパスを指定してレジストリを開く
Dim rKey As RegistryKey = Registry.LocalMachine.OpenSubKey(rKeyName)

' レジストリの値を取得
Dim location As String = CStr(rKey.GetValue(rGetValueName))

' 開いたレジストリを閉じる
rKey.Close()

' コンソールに取得したレジストリの値を表示
Console.WriteLine(location)
Catch ex As NullReferenceException
' レジストリ・キーまたは値が存在しない
Console.WriteLine("レジストリ[" + rKeyName + "]の[" + rGetValueName + "]がありません!")
End Try
End Sub

End Module

最終更新:2006年09月08日 22:01