Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Role / DirectoryGroupQuery.cs / 1305376 / DirectoryGroupQuery.cs
#region Using directives using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Net; using System.DirectoryServices; #endregion namespace System.Workflow.Activities { [Serializable] sealed internal class DirectoryGroupQuery : IDirectoryOperation { public DirectoryGroupQuery() { } public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, Listresponse) { if (response == null) throw new ArgumentNullException("response"); Stack entries = new Stack (); entries.Push(currentEntry); while (entries.Count != 0) { DirectoryEntry entry = entries.Pop(); bool isGroup = false; if (Contains(entry.Properties.PropertyNames,"objectClass")) { foreach (String value in entry.Properties["objectClass"]) { if (String.Compare(value, ActiveDirectoryRoleFactory.Configuration.Group, StringComparison.Ordinal) == 0) { isGroup = true; break; } } if (isGroup) { if (Contains(entry.Properties.PropertyNames, ActiveDirectoryRoleFactory.Configuration.Member)) { foreach (String propValue in entry.Properties[ActiveDirectoryRoleFactory.Configuration.Member]) { entries.Push(new DirectoryEntry(BuildUri(propValue))); } } } else { response.Add(entry); } } } } private static bool Contains(ICollection propertyNames, String testPropertyName) { foreach (String propertyName in propertyNames) { if (String.Compare(propertyName, testPropertyName, StringComparison.Ordinal) == 0) return true; } return false; } private static String BuildUri(String propValue) { StringBuilder sb = new StringBuilder(); sb.Append("LDAP://"); for (int i = 0; i < propValue.Length; ++i) { if (propValue[i] == '/') sb.Append("\\/"); else sb.Append(propValue[i]); } return sb.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. #region Using directives using System; using System.Collections; using System.Collections.Generic; using System.Text; using System.Net; using System.DirectoryServices; #endregion namespace System.Workflow.Activities { [Serializable] sealed internal class DirectoryGroupQuery : IDirectoryOperation { public DirectoryGroupQuery() { } public void GetResult(DirectoryEntry rootEntry, DirectoryEntry currentEntry, List response) { if (response == null) throw new ArgumentNullException("response"); Stack entries = new Stack (); entries.Push(currentEntry); while (entries.Count != 0) { DirectoryEntry entry = entries.Pop(); bool isGroup = false; if (Contains(entry.Properties.PropertyNames,"objectClass")) { foreach (String value in entry.Properties["objectClass"]) { if (String.Compare(value, ActiveDirectoryRoleFactory.Configuration.Group, StringComparison.Ordinal) == 0) { isGroup = true; break; } } if (isGroup) { if (Contains(entry.Properties.PropertyNames, ActiveDirectoryRoleFactory.Configuration.Member)) { foreach (String propValue in entry.Properties[ActiveDirectoryRoleFactory.Configuration.Member]) { entries.Push(new DirectoryEntry(BuildUri(propValue))); } } } else { response.Add(entry); } } } } private static bool Contains(ICollection propertyNames, String testPropertyName) { foreach (String propertyName in propertyNames) { if (String.Compare(propertyName, testPropertyName, StringComparison.Ordinal) == 0) return true; } return false; } private static String BuildUri(String propValue) { StringBuilder sb = new StringBuilder(); sb.Append("LDAP://"); for (int i = 0; i < propValue.Length; ++i) { if (propValue[i] == '/') sb.Append("\\/"); else sb.Append(propValue[i]); } return sb.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InvokeGenerator.cs
- COM2AboutBoxPropertyDescriptor.cs
- CompilerResults.cs
- MsmqOutputChannel.cs
- InvokeProviderWrapper.cs
- TemplateColumn.cs
- OdbcConnectionHandle.cs
- ThreadAbortException.cs
- WebPartCatalogCloseVerb.cs
- PathFigureCollection.cs
- ZipFileInfoCollection.cs
- FormViewDeleteEventArgs.cs
- TileModeValidation.cs
- CapacityStreamGeometryContext.cs
- Executor.cs
- XamlPoint3DCollectionSerializer.cs
- CustomTypeDescriptor.cs
- ListControl.cs
- CollectionEditor.cs
- NamedElement.cs
- XmlLangPropertyAttribute.cs
- NativeMethods.cs
- GeneralTransform.cs
- ServiceModelEnumValidatorAttribute.cs
- SqlMethodCallConverter.cs
- SynchronizedInputProviderWrapper.cs
- ServicePrincipalNameElement.cs
- SqlDelegatedTransaction.cs
- SettingsPropertyNotFoundException.cs
- FileDialog_Vista_Interop.cs
- DependencyObjectValidator.cs
- SponsorHelper.cs
- OptimalBreakSession.cs
- SmtpLoginAuthenticationModule.cs
- ComboBoxDesigner.cs
- SkipQueryOptionExpression.cs
- EventLogPermissionEntryCollection.cs
- LiteralControl.cs
- LicenseProviderAttribute.cs
- WebBrowserSiteBase.cs
- ThreadPool.cs
- DetailsViewUpdatedEventArgs.cs
- X509Certificate2Collection.cs
- DataStreamFromComStream.cs
- OverrideMode.cs
- TableHeaderCell.cs
- RelatedView.cs
- ResourceExpression.cs
- ObjectQuery.cs
- SignatureConfirmations.cs
- ExtensionSimplifierMarkupObject.cs
- RsaSecurityTokenAuthenticator.cs
- ZeroOpNode.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- ProfileSettingsCollection.cs
- TextParagraphProperties.cs
- _AuthenticationState.cs
- SharedConnectionWorkflowTransactionService.cs
- mediaclock.cs
- SafeNativeMethodsMilCoreApi.cs
- OutputScopeManager.cs
- RepeatButton.cs
- DataGridViewCellConverter.cs
- StateRuntime.cs
- ToolStripDropDownClosedEventArgs.cs
- SchemaCollectionPreprocessor.cs
- TextShapeableCharacters.cs
- EntityCommandDefinition.cs
- OrderedDictionary.cs
- ToolStripSettings.cs
- StateBag.cs
- ObjectSecurity.cs
- ThrowHelper.cs
- TableLayoutSettings.cs
- NoneExcludedImageIndexConverter.cs
- MouseButton.cs
- MarkupCompilePass2.cs
- ActivityCodeDomSerializationManager.cs
- XdrBuilder.cs
- CodeTypeMember.cs
- ObjectViewListener.cs
- SortQuery.cs
- ExtendedPropertyDescriptor.cs
- StackBuilderSink.cs
- CodeGenerator.cs
- FormsAuthenticationConfiguration.cs
- FontSource.cs
- RenderCapability.cs
- ApplicationFileCodeDomTreeGenerator.cs
- DataGridViewLayoutData.cs
- HtmlElementEventArgs.cs
- ButtonBaseAutomationPeer.cs
- IPPacketInformation.cs
- Deflater.cs
- ViewManager.cs
- PermissionSetTriple.cs
- BamlLocalizationDictionary.cs
- XamlTreeBuilder.cs
- QueryStringParameter.cs
- BasicExpandProvider.cs