web-dev-qa-db-ja.com

ソースは見つかりませんでしたが、一部またはすべてのイベントログを検索できませんでした

次の例外が発生します。レジストリ編集のイベントログでAsp.netアカウントにフルコントロールを与えました。

[SecurityException:ソースは見つかりませんでしたが、一部またはすべてのイベントログを検索できませんでした。アクセスできないログ:セキュリティ。]

System.Diagnostics.EventLog.FindSourceRegistration(String source,  String machineName, Boolean readOnly, Boolean wantToCreate) +664
System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) +109
System.Diagnostics.EventLog.SourceExists(String source) +14 Microsoft.ApplicationBlocks.ExceptionManagement.DefaultPublisher.VerifyValidSource() +41

これはサーバー上の設定の問題が原因だと思いますか?

113
Vaibhav Jain

EventLog.SourceExistsは、HKLM\SYSTEM\CurrentControlSet\services\eventlogのサブキーを列挙して、指定された名前のサブキーが含まれているかどうかを確認します。コードを実行しているユーザーアカウントに、ターゲットソースを見つける前にアクセスしようとするサブキー(この場合はSecurityサブキー)への読み取りアクセス権がない場合、説明したような例外が表示されます。

このような問題を処理するための通常のアプローチは、インストール時に(管理者アカウントで) イベントログソースを登録する を実行し、実行時に存在することを前提とします。イベントログソースは実行時に実際には存在しません。

99
Nicole Calinoiu

同じ例外がありました。私の場合、管理者権限でコマンドプロンプトを実行する必要がありました。

[スタート]メニューから[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。

65
live-love

私にとって、このエラーはコマンドプロンプトによるもので、管理者権限で実行されていませんでした。コマンドプロンプトを右クリックして、「管理者として実行」と言う必要があります。

サービスをインストールまたはアンインストールするには、管理者の役割が必要です。

9
Raza

「管理者として」開発者コマンドラインを起動します。このアカウントにはセキュリティログへのフルアクセスがあります

8
dmolisher

私には役に立たなかった。

新しいキーと文字列値を作成し、それを機能させることができました

Key= HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\<Your app name>\
String EventMessageFile value=C:\Windows\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll
6
Mike Hart

IISでSenseNet TaskManagement Webサイトの新規インストールを実行している場合(WebPIではなくソースコードから)、通常SignalR通信に関連するこのメッセージが表示されます。 @ nicole-caliniouが指摘しているように は、レジストリ内のキー検索が失敗したためです。

SenseNet TaskManagement v1.1.0でこれを解決するには、まずweb.configファイルでレジストリキー名を見つけます。デフォルトでは「SnTaskWeb」です。

 <appSettings>
   <add key="LogSourceName" value="SnTaskWeb" />

レジストリエディターregedit.exeを開き、HKLM\SYSTEM\CurrentControlSet\Services\EventLog\SnTaskに移動します。 SnTaskを右クリックして、New Keyを選択し、上記の構成のキーにSnTaskWebという名前を付けます。次に、SnTaskWeb要素を右クリックして、New Expandable String Valueを選択します。名前はEventMessageFileであり、値データはC:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dllでなければなりません。

キーワード:signalr、sensenet、regedit、permissions

0
Thane Plummer

私にとってはiisresetだけでした(cmdを管理者として実行-> iisreset)。たぶん誰かが試してみることができます。

0
Miroslav Bihari

アクセスできないログ:セキュリティ

新しいイベントソースには、セキュリティ(読み取り時に管理者権限が必要)を含むすべてのログで一意の名前が必要です。

そのため、アプリでソースを作成するにはadmin privilegeが必要になります。しかし、それはおそらくやり過ぎです。

イベントソースを自由に作成するために、これをpowershell scriptと書きました。 *.ps1として保存し、any特権で実行すると、それ自体が昇格します。

# CHECK OR RUN AS ADMIN

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{   
    $arguments = "& '" + $myinvocation.mycommand.definition + "'"
    Start-Process powershell -Verb runAs -ArgumentList $arguments
    Break
}

# CHECK FOR EXISTENCE OR CREATE

$source = "My Service Event Source";
$logname = "Application";

if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
    [System.Diagnostics.EventLog]::CreateEventSource($source, $logname);
    Write-Host $source -f white -nonewline; Write-Host " successfully added." -f green;
}
else
{
    Write-Host $source -f white -nonewline; Write-Host " already exists.";
}

# DONE

Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
0
Bizhan