- PR -

【急ぎ】VB2008でWINDOWS SERVER 2008にイベントログの書き込みについて

投稿者投稿内容
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-12-19 11:03
こんにちは。
クライアント(WINDOWS VISTA ENTERPRISE SP1)でVB2008のコンソールアプリケーションを開発しています。

VISTA自分自身のWindowsイベントログに書き込みはできましたが、ほかのPC名を指定して、書き込みはできませんでした。指定したPCのOSはWINDOWS SERVER 2008 DATACENTER SP1です。

TRY CATCHで返してくれたEXの内容:
コード:
ex.Message=
許可されていない操作を実行しようとしました。

ex.StackTrace=
場所 Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str)
   場所 Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String machineName)
   場所 System.Diagnostics.EventLog.GetEventLogRegKey(String machine, Boolean writable)
   場所 System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly)
   場所 System.Diagnostics.EventLog.SourceExists(String source, String machineName)
   場所 vb2k8ssis.Module1.func_Winsystemlog(String argStrmsg, Int32 argIntlog, Int32 argEventid) 場所 D:\テスト用\vb2k8\vb2k8\Module1.vb:行 347



このファンクションのソースコードを貼ります。
コード:
'Windows Systemイベントログ出力
        Dim cpt = 'WIN2K8SV'              ' コンピュータ名
        Dim log = 'Application'           ' イベント・ログ名
        Dim src = 'TEST'                  ' イベント・ソース名

        Try
            If Not EventLog.SourceExists(src, cpt) Then
                Dim data As New EventSourceCreationData(src, log)
                EventLog.CreateEventSource(data)
            End If

            Dim elog As New EventLog(log, cpt, src)

            Select Case argIntlog
                Case 1
                    ' Write an 'Error' entry in specified log of event log.
                    elog.WriteEntry(argStrmsg, EventLogEntryType.Error, argEventid)
                Case 2
                    ' Write a 'Warning' entry in specified log of event log.
                    elog.WriteEntry(argStrmsg, EventLogEntryType.Warning, argEventid)
                Case 4
                    ' Write an 'Information' entry in specified log of event log.
                    elog.WriteEntry(argStrmsg, EventLogEntryType.Information, argEventid)
                Case 16
                    ' Write a 'FailureAudit' entry in specified log of event log.
                    elog.WriteEntry(argStrmsg, EventLogEntryType.FailureAudit, argEventid)
                Case 8
                    ' Write a 'SuccessAudit' entry in specified log of event log.
                    elog.WriteEntry(argStrmsg, EventLogEntryType.SuccessAudit, argEventid)
                Case Else
                    Exit Function
            End Select

        Catch ex As Exception
            If ex.InnerException Is Nothing Then
                strMsg = "InnerException:Nothing" & Space(1) & "Message:" & ex.Message
            Else
                strMsg = "InnerException:" & ex.InnerException.ToString & Space(1) & "Message:" & ex.Message
            End If
        End Try




待っています。ぜひご教授ください。
めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2008-12-19 11:55
許可されていないかも!
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-12-19 12:00
引用:

めだかさんの書き込み (2008-12-19 11:55) より:
許可されていないかも!


どうもです。
エラーメッセージを見ると、許可されていないことはわかっています。

どうすればいいですかね?WINDOWS2008のセキュリティのポート設定ですかね?それとも、ほかの何か設定必要がありますかね?
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-19 12:12
EventLogPermission とかじゃないのかな。
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-12-19 12:24
引用:

Kingさんの書き込み (2008-12-19 12:12) より:
EventLogPermission とかじゃないのかな。


どうもです。

MSDNで見たら、サポートOSは
プラットフォーム
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
となっていますが…

WINDOWSSERVER2008は入っていないですね。

http://msdn.microsoft.com/ja-jp/library/system.diagnostics.eventlogpermission.aspx
_________________
yangjiayi
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-19 12:38
サポート OS どうこうはイベントを書き込みに行く側
> クライアント(WINDOWS VISTA ENTERPRISE SP1)
の話では?
その考え方で行くと
EventLog クラスも Windows Server 2008 をサポート OS としていないですよ。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-12-19 12:38
引用:

yangjiayiさんの書き込み (2008-12-19 12:24) より:

MSDNで見たら、サポートOSは
プラットフォーム
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98
となっていますが…

WINDOWSSERVER2008は入っていないですね。

http://msdn.microsoft.com/ja-jp/library/system.diagnostics.eventlogpermission.aspx


それはおそらく、ドキュメントの更新時点で Windows Server 2008 がまだなかったからではないかと。
yangjiayi
ベテラン
会議室デビュー日: 2007/10/04
投稿数: 59
投稿日時: 2008-12-19 12:48
引用:

Kingさんの書き込み (2008-12-19 12:38) より:
サポート OS どうこうはイベントを書き込みに行く側
> クライアント(WINDOWS VISTA ENTERPRISE SP1)
の話では?
その考え方で行くと
EventLog クラスも Windows Server 2008 をサポート OS としていないですよ。


そうですね。
VISTAのほうでモジュールを実行します。
イベント書き込み対象はWindows Server 2008です。
_________________
yangjiayi

スキルアップ/キャリアアップ(JOB@IT)