2016-05-13 9 views
1

Ich bin ein Build-Service von einem alten Windows XP-Server auf Windows Server 2K12 R2 verlagern, und jetzt bin ich fest mit dem, was scheint, ein Berechtigungsproblem zu sein:NUnit schlägt mit „unzugängliche Protokolle: Sicherheit“

während der "Integrationstest" Schritt meines bauen, nicht NUnit:

Errors and Failures: 
1) SetUp Error : Hidden.UAC.Service.IntegrationTest.TestSetUp 
    SetUp : System.Security.SecurityException : The source was not found, but some or all event logs could not be searched. Inaccessible logs: Security. 
    at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) 
    at System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate) 
    at Hidden.Cornerstone.Common.ApplicationManager.LogException(Exception e) in e:\Builder\TeamCity\buildAgent\work\9dbde7d05f17a8e5\Hidden.Cornerstone\Hidden.Cornerstone.Common\ApplicationManager.cs:line 99 
    at Hidden.Cornerstone.Common.ApplicationManager.Initialize() in e:\Builder\TeamCity\buildAgent\work\9dbde7d05f17a8e5\Hidden.Cornerstone\Hidden.Cornerstone.Common\ApplicationManager.cs:line 91 
    at Hidden.UAC.Service.IntegrationTest.TestSetUp.Init() in e:\Builder\TeamCity\buildAgent\work\9dbde7d05f17a8e5\Hidden.UAC\Hidden.UAC.Service.Impl.IntegrationTest\TestSetUp.cs:line 22 

der Build-Agent wird als der Benutzer ausgeführt wird BuildSrvService. Ich verwende TeamCity Professional 9.1.7 und NUnit 2.6.4 auf einem Windows Server 2012 R2 Datacenter-Server.

ich die Lösung hier gehe davon ist irgendwie die richtigen Berechtigungen für das Ereignisprotokoll für den Benutzer zu gewähren den Build-Agent ausgeführt wird, aber ich brauche ein wenig Hilfe hier :-)

Antwort

1

Durch ein paar Kompatibilität Probleme, wir sind - für jetzt - an einer älteren Version von NUnit, die auf .net 3.5 läuft. Eine Sicherheitsänderung, die mit Windows Server 2003 eingeführt wird, erfordert, dass Anwendungen registriert werden, bevor Zugriff auf das Ereignisprotokoll erteilt wird.

Weitere Informationen finden Sie unter https://stackoverflow.com/a/7848414/1353645 und https://stackoverflow.com/a/4603820/1353645.

Quick Fix: Ihre Anwendungsnamen herauszufinden (suchen Sie nach EventLog.CreateEventSource in Ihrer Quelle) und die Registrierung von einer erhöhten Powershell aktualisiert:

PS> $RegistryBase = "HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Application" 
PS> $ApplicationName = "MyApplicationName" 

PS> New-Item ` 
     -Force ` 
     -Path $RegistryBase ` 
     -Name $ApplicationName 

PS> New-ItemProperty ` 
     -Force ` 
     -Path "$RegistryBase\$ApplicationName" ` 
     -Name "EventMessageFile" ` 
     -PropertyType ExpandString ` 
     -Value "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll"