本文整理汇总了C#中System.Threading.EventWaitHandle.GetAccessControl方法的典型用法代码示例。如果您正苦于以下问题:C# EventWaitHandle.GetAccessControl方法的具体用法?C# EventWaitHandle.GetAccessControl怎么用?C# EventWaitHandle.GetAccessControl使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Threading.EventWaitHandle
的用法示例。
在下文中一共展示了EventWaitHandle.GetAccessControl方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Initialize
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();
}
示例2: PermissionsActuallyWork
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 ();
}
}
示例3: GetAccessControl
public static EventWaitHandleSecurity GetAccessControl(EventWaitHandle handle)
{
return handle.GetAccessControl();
}
示例4: Initialize
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();
}