public static void Initialize(XenGuestAgentLib.XenGuestServices service) { Program.AssertOffEventThread(); Thread thread; string evname; EventWaitHandleSecurity evsec; EventWaitHandleAccessRule evrule; string user; xgsc = service; alertList = Program.GetAlertList(); evname = xgsc.RegisterAlertsEvent(); user = Environment.UserDomainName + "\\" + Environment.UserName; evalerts = EventWaitHandle.OpenExisting(evname, EventWaitHandleRights.ReadPermissions | EventWaitHandleRights.ChangePermissions); evsec = evalerts.GetAccessControl(); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Deny); evsec.RemoveAccessRule(evrule); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Allow); evsec.AddAccessRule(evrule); evalerts.SetAccessControl(evsec); evalerts = EventWaitHandle.OpenExisting(evname); thread = new Thread(alertUpdater); thread.Name = "XenClient Alert Thread"; thread.IsBackground = true; thread.Start(); }
public static EventWaitHandleSecurity GetAccessControl(this EventWaitHandle handle) { if (handle == null) { throw new ArgumentNullException(nameof(handle)); } return(handle.GetAccessControl()); }
public void PermissionsActuallyWork () { if (PlatformID.Win32NT != Environment.OSVersion.Platform) { Assert.Ignore (); } bool createdNew; EventWaitHandleSecurity security; string name = @"Local\MonoTestWaitHandle"; using (EventWaitHandle handle = new EventWaitHandle (false, EventResetMode.ManualReset, name, out createdNew)) { Assert.IsFalse (handle.SafeWaitHandle.IsInvalid); Assert.IsTrue (createdNew); // Make sure our later error will be due to permissions and not some sharing bug. bool createdAnotherNew; using (EventWaitHandle anotherHandle = new EventWaitHandle (false, EventResetMode.ManualReset, name, out createdAnotherNew)) { Assert.IsFalse (anotherHandle.SafeWaitHandle.IsInvalid); Assert.IsFalse (createdAnotherNew); } // Let's make a deny all. security = handle.GetAccessControl (); foreach (EventWaitHandleAccessRule rule in security.GetAccessRules (true, false, typeof (SecurityIdentifier))) { security.RemoveAccessRuleSpecific (rule); } Assert.AreEqual (0, security.GetAccessRules (true, false, typeof (SecurityIdentifier)).Count); handle.SetAccessControl (security); security = handle.GetAccessControl (); Assert.AreEqual (0, security.GetAccessRules (true, false, typeof (SecurityIdentifier)).Count); // MS.NET will throw on the first line below. // For Mono testing the latter verifies the rest until the EventWaitHandle bug is fixed. // Also, NUnit 2.4 appears to lacks Assert.Pass (). EventWaitHandle badHandle = new EventWaitHandle(false, EventResetMode.ManualReset, name); if (badHandle.SafeWaitHandle.IsInvalid) throw new UnauthorizedAccessException (); } }
public static void Initialize() { Program.AssertOffEventThread(); Thread thread; string evname; EventWaitHandleSecurity evsec; EventWaitHandleAccessRule evrule; string user; xgs = Program.GetXGS(); systray = Program.GetSystray(); alertList = Program.GetAlertList(); evname = xgs.GetAlertsEventName(); user = Environment.UserDomainName + "\\" + Environment.UserName; evalerts = EventWaitHandle.OpenExisting(evname, EventWaitHandleRights.ReadPermissions | EventWaitHandleRights.ChangePermissions); evsec = evalerts.GetAccessControl(); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Deny); evsec.RemoveAccessRule(evrule); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Allow); evsec.AddAccessRule(evrule); evalerts.SetAccessControl(evsec); evalerts = EventWaitHandle.OpenExisting(evname); thread = new Thread(alertUpdater); thread.Name = "XenClient Alert Thread"; thread.IsBackground = true; thread.Start(); }
public static void Initialize(XenGuestAgentLib.XenGuestServices service) { Program.AssertOffEventThread(); Thread thread; string evname; EventWaitHandleSecurity evsec; EventWaitHandleAccessRule evrule; string user; xgsc = service; evname = xgsc.RegisterVmsEvent(); user = Environment.UserDomainName + "\\" + Environment.UserName; evvms = EventWaitHandle.OpenExisting(evname, EventWaitHandleRights.ReadPermissions | EventWaitHandleRights.ChangePermissions); evsec = evvms.GetAccessControl(); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Deny); evsec.RemoveAccessRule(evrule); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Allow); evsec.AddAccessRule(evrule); evvms.SetAccessControl(evsec); evvms = EventWaitHandle.OpenExisting(evname); // Start the monitor thread thread = new Thread(CacheXgsMonitor); thread.Name = "XenClient Cache Thread"; thread.IsBackground = true; thread.Start(); }
public static EventWaitHandleSecurity GetAccessControl(this EventWaitHandle handle) { return(handle.GetAccessControl()); }
public static EventWaitHandleSecurity GetAccessControl(EventWaitHandle handle) { return handle.GetAccessControl(); }
public static void Initialize() { Program.AssertOffEventThread(); Thread thread; string evname; EventWaitHandleSecurity evsec; EventWaitHandleAccessRule evrule; string user; xgs = Program.GetXGS(); evname = xgs.GetVmsEventName(); user = Environment.UserDomainName + "\\" + Environment.UserName; evvms = EventWaitHandle.OpenExisting(evname, EventWaitHandleRights.ReadPermissions | EventWaitHandleRights.ChangePermissions); evsec = evvms.GetAccessControl(); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Deny); evsec.RemoveAccessRule(evrule); evrule = new EventWaitHandleAccessRule(user, EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, AccessControlType.Allow); evsec.AddAccessRule(evrule); evvms.SetAccessControl(evsec); evvms = EventWaitHandle.OpenExisting(evname); // Start the monitor thread thread = new Thread(CacheXgsMonitor); thread.Name = "XenClient Cache Thread"; thread.IsBackground = true; thread.Start(); }