void NamedPipePermissionsActuallyWorkSync (string name, bool addDenyEveryone) { if (PlatformID.Win32NT != Environment.OSVersion.Platform) { Assert.Ignore (); return; } PipeSecurity security = new PipeSecurity (); SecurityIdentifier worldSid = new SecurityIdentifier ("WD"); PipeAccessRule rule = new PipeAccessRule (worldSid, PipeAccessRights.FullControl, AccessControlType.Allow); security.AddAccessRule (rule); using (NamedPipeServerStream server = CreateNamedServer (false, name, security, PipeAccessRights.ChangePermissions)) { security = server.GetAccessControl (); AuthorizationRuleCollection rules; rules = security.GetAccessRules (true, true, typeof (SecurityIdentifier)); Assert.AreEqual (1, rules.Count); rule = (PipeAccessRule)rules [0]; Assert.AreEqual (AccessControlType.Allow, rule.AccessControlType); Assert.AreEqual (worldSid, rule.IdentityReference); Assert.AreEqual (PipeAccessRights.FullControl, rule.PipeAccessRights); if (addDenyEveryone) AddDenyEveryone (server); bool unauthorized = false; using (NamedPipeClientStream client = CreateNamedClient (false, name)) { try { client.Connect (1000); } catch (UnauthorizedAccessException) { unauthorized = true; } } Assert.AreEqual (addDenyEveryone, unauthorized); } }