Project Server 2013 – Access to the registry key ‘Global’ is denied

Issue

Every minutes, in ULS logs, you get this error:

  • Process: Microsoft.Office.Project.Server
  • Product: Project Server
  • Category: Project Calculation Service
Timer Task thread crashed System.UnauthorizedAccessException: Access to the registry key 'Global' is denied. 
 at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str) 
 at Microsoft.Win32.RegistryKey.InternalGetValue(String name, Object defaultValue, Boolean doNotExpand, Boolean checkSecurity) 
 at Microsoft.Win32.RegistryKey.GetValue(String name) 
 at System.Diagnostics.PerformanceMonitor.GetData(String item) 
 at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item) 
 at System.Diagnostics.PerformanceCounterLib.get_CategoryTable() 
 at System.Diagnostics.PerformanceCounterLib.CounterExists(String category, String counter, Boolean& categoryExists) 
 at System.Diagnostics.PerformanceCounterLib.CounterExists(String machine, String category, String counter) 
 at System.Diagnostics.PerformanceCounter.InitializeImpl() 
 at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, String instanceName, Boolean readOnly) 
 at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, String instanceName) 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsPerfCounter.<.ctor>b__0() 
 at System.Lazy`1.CreateValue() --- End of stack trace from previous location where exception was thrown --- 
 at System.Lazy`1.get_Value() 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsPerfCounter.EnsureSampleDataTask() 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsTaskWorker.PerformTasksCallback(Object obj) StackTrace: 
 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
 at System.Threading.ThreadPoolWorkQueue.Dispatch()

Solution

Project Server maintains performance counters for itself. So it must have rights to do so. You need to add the account that start Project Server to the following local Windows groups:

  • Performance Log Users
  • Performance Monitor Users

Then restart Project Server services when the job queue is empty

SharePoint 2013 – MsiInstaller – 1015 – Failed to connect to server. Error: 0x80070005

Issue

Everynight in event log, you find this warning:

Failed to connect to server. Error: 0x80070005

2014-08-03_16-37-25

But you don’t find the generally associated COM errors.

Solution

  1. Make farm admin account temporary local admin (the one that start SharePoint Timer)
  2. Through SharePoint PowerShell: Get-SPProduct -local
  3. Through SharePoint PowerShell: (get-spserver $env:computername).NeedsUpgrade
  4. Start manually the timer job which generate this warning: Get-SPTimerJob job-admin-product-version | Start-SPTimerJob
  5. Ensure this warning is not happening anymore
  6. Remove from local admin group
  7. Restart SharePoint Timer
  8. Start again manually the timer job which generate this warning: Get-SPTimerJob job-admin-product-version | Start-SPTimerJob
  9. Ensure this warning is not happening anymore