diff --git a/juddi-client.net/juddi-client.net.test/org.apache.juddi.client.test/LogFactoryTests.cs b/juddi-client.net/juddi-client.net.test/org.apache.juddi.client.test/LogFactoryTests.cs
index 12921cc..31cf067 100644
--- a/juddi-client.net/juddi-client.net.test/org.apache.juddi.client.test/LogFactoryTests.cs
+++ b/juddi-client.net/juddi-client.net.test/org.apache.juddi.client.test/LogFactoryTests.cs
@@ -17,11 +17,8 @@
 using NUnit.Framework;
 using org.apache.juddi.v3.client;
 using System;
-using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
-using System.Linq;
-using System.Text;
 using org.apache.juddi.v3.client.log;
 
 namespace juddi_client.net.test
@@ -64,10 +61,11 @@
             try
             {
                 elog = new EventLog(EventLogger.EVENT_LOG_SOURCE);
+                Assert.True(elog.Entries.Count > 1);
             }
-            catch (Exception ex) { }
-            Assume.That(elog != null);
-            Assert.True(elog.Entries.Count > 1);
+            catch (Exception ex) {
+                Assert.Ignore("test ignored, event log access was probably denied " + ex.Message);
+            }
         }
 
         [Test]
@@ -95,10 +93,12 @@
             try
             {
                 elog = new EventLog(EventLogger.EVENT_LOG_SOURCE);
+                Assert.True(elog.Entries.Count > 1);
             }
-            catch (Exception ex) { }
-            Assume.That(elog != null);
-            Assert.True(elog.Entries.Count > 1);
+            catch (Exception ex) {
+                Assert.Ignore("test ignored, event log access was probably denied " + ex.Message);
+            }
+            
         }
 
 
