0

Windows .NET アプリケーションで作業しており、イベント ログに書き込みたいと考えています。

Public Shared Sub WriteExceptionToEventLog(ByVal message As String)
        Dim cs As String = "TESTLOG"
        Dim elog As New EventLog()
        Dim sourceExist As Boolean

        Try
            sourceExist = EventLog.SourceExists(cs)
        Catch ex As Exception
            sourceExist = False
        End Try

        If Not sourceExist Then
            Dim ev As New EventLogPermission(EventLogPermissionAccess.Administer, ".")
            ev.PermitOnly()
            EventLog.CreateEventSource(cs, "TESTLOG")
        End If
        elog.Source = cs
        elog.EnableRaisingEvents = True
        EventLog.WriteEntry(cs, message, EventLogEntryType.[Error])

    End Sub

しかし、Windows 7 のユーザーは Eventlog に書き込むために管理者権限が必要なため、これは機能しません。「Run ad Admin」モードでアプリケーションを実行したときも同じことが成功しました。

vb.net のコード セグメントに管理者権限を与える方法はありますか (なりすまし以外)?

4

2 に答える 2

3

書き込みを行わないようにイベント ソースを作成するには、管理者権限が必要です。

インストール時にソースを作成するか、昇格したコマンド プロンプトで手動で作成します。

eventcreate /ID 1 /L APPLICATION /T INFORMATION /SO mysource /D "created mysource"
于 2012-07-06T06:21:10.717 に答える
0

app.manifestrequestedExecutionLevelを次のように変更できます。requireAdministratorこれにより、アプリケーションの実行時に UAC プロンプトが強制的に表示され、アプリケーションは管理者として実行できる場合にのみ実行されます。(これを変更するには、に移動しますProject Properties>Application tab>View Windows Settings)

アプリケーションが頻繁に管理者権限を必要とする場合、これが本当に唯一の方法です。

管理者権限がたまにしか必要ない場合は、イベント ログに書き込む必要がある時点で、より高い権限でアプリケーションを再起動できます。詳細については、.NET アプリケーションでの UAC の使用に関するこの有益な記事を参照してください。

于 2012-07-06T08:00:23.480 に答える