Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / ListenerServiceInstallComponent.cs / 1 / ListenerServiceInstallComponent.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Install { using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Security.AccessControl; using System.Security.Principal; using System.ServiceProcess; class ListenerServiceInstallComponent : ServiceInstallComponent { static SecurityIdentifier adminSid; ListenerServiceInstallComponent(string serviceName, string legacyServiceName, string displayName, string serviceArguments, string[] dependsOn, string accountName, string description) : base(serviceName, legacyServiceName, displayName, ServiceStartMode.Disabled, ServiceModelInstallStrings.ListenerServiceExeName, serviceArguments, dependsOn, accountName, description, ServiceModelInstallStrings.ListenerServiceSecurityDescriptor) { // empty } static SecurityIdentifier AdminSid { get { if (adminSid == null) { adminSid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null); } return adminSid; } } public static ServiceModelInstallComponent CreateTcpPortSharingServiceInstallComponent() { return new ListenerServiceInstallComponent( ServiceModelInstallStrings.TcpPortSharingServiceName, ServiceModelInstallStrings.LegacyTcpPortSharingServiceName, SR.GetString(SR.TcpPortSharingServiceDisplayName), null, ServiceModelInstallStrings.TcpPortSharingServiceDependencies, ServiceModelInstallStrings.LocalServiceAccountName, SR.GetString(SR.TcpPortSharingServiceDescription)); } public static ServiceModelInstallComponent CreateTcpActivationServiceInstallComponent() { return new ListenerServiceInstallComponent( ServiceModelInstallStrings.TcpActivationServiceName, ServiceModelInstallStrings.LegacyTcpActivationServiceName, SR.GetString(SR.TcpActivationServiceDisplayName), null, ServiceModelInstallStrings.TcpActivationServiceDependencies, ServiceModelInstallStrings.LocalServiceAccountName, SR.GetString(SR.TcpActivationServiceDescription)); } public static ServiceModelInstallComponent CreateNamedPipeActivationServiceInstallComponent() { return new ListenerServiceInstallComponent( ServiceModelInstallStrings.NamedPipeActivationServiceName, ServiceModelInstallStrings.LegacyNamedPipeActivationServiceName, SR.GetString(SR.NamedPipeActivationServiceDisplayName), null, ServiceModelInstallStrings.NamedPipeActivationServiceDependencies, ServiceModelInstallStrings.LocalServiceAccountName, SR.GetString(SR.NamedPipeActivationServiceDescription)); } public static ServiceModelInstallComponent CreateMsmqActivationServiceInstallComponent() { return new ListenerServiceInstallComponent( ServiceModelInstallStrings.MsmqActivationServiceName, ServiceModelInstallStrings.LegacyMsmqActivationServiceName, SR.GetString(SR.MsmqActivationServiceDisplayName), "-" + ServiceModelInstallStrings.MsmqActivationServiceName, ServiceModelInstallStrings.MsmqActivationServiceDependencies, ServiceModelInstallStrings.NetworkServiceAccountName, SR.GetString(SR.MsmqActivationServiceDescription)); } protected override void OnInstall(OutputLevel outputLevel) { base.OnInstall(outputLevel); this.SetConfigSecurity(outputLevel); this.SetExtendedProperties(); } protected override void OnReinstall(OutputLevel outputLevel) { base.OnReinstall(outputLevel); this.SetConfigSecurity(outputLevel); this.SetExtendedProperties(); } void SetConfigSecurity(OutputLevel outputLevel) { string listenerConfigFile = Path.Combine(InstallHelper.GetWcfRuntimeInstallPath(), ServiceModelInstallStrings.ListenerServiceExeName + ".config"); FileSecurity fileSecurity = null; try { fileSecurity = File.GetAccessControl(listenerConfigFile); } catch (FileNotFoundException) { // acceptable } if (fileSecurity != null) { fileSecurity.AddAccessRule(new FileSystemAccessRule(AdminSid, FileSystemRights.FullControl, AccessControlType.Allow)); fileSecurity.AddAccessRule(new FileSystemAccessRule(ServiceModelInstallStrings.LocalServiceAccountName, FileSystemRights.Read, AccessControlType.Allow)); fileSecurity.AddAccessRule(new FileSystemAccessRule(ServiceModelInstallStrings.NetworkServiceAccountName, FileSystemRights.Read, AccessControlType.Allow)); try { File.SetAccessControl(listenerConfigFile, fileSecurity); } catch (FileNotFoundException) { // acceptable } } } void SetExtendedProperties() { if (OSEnvironmentHelper.IsVistaOrGreater) { ExecuteSC("sidtype " + this.ServiceName + " restricted"); ExecuteSC("privs " + this.ServiceName + " SeCreateGlobalPrivilege"); } } } } // 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
- ResolveNameEventArgs.cs
- AppDomainProtocolHandler.cs
- cookiecollection.cs
- AttributeConverter.cs
- PropertiesTab.cs
- MulticastDelegate.cs
- XmlILIndex.cs
- InputLangChangeEvent.cs
- X509ThumbprintKeyIdentifierClause.cs
- Journaling.cs
- GetCertificateRequest.cs
- AnnotationMap.cs
- securitycriticaldata.cs
- AuthStoreRoleProvider.cs
- StorageRoot.cs
- WebPartCancelEventArgs.cs
- ZipFileInfo.cs
- UnsafeNativeMethods.cs
- SqlStream.cs
- Int32Rect.cs
- WebPartMenu.cs
- DataSourceXmlAttributeAttribute.cs
- NameValuePermission.cs
- SystemPens.cs
- XmlNavigatorStack.cs
- ClassHandlersStore.cs
- HandlerBase.cs
- XmlParser.cs
- OnOperation.cs
- Thread.cs
- TextContainerChangedEventArgs.cs
- XmlSchemaGroup.cs
- exports.cs
- XPathSelectionIterator.cs
- UnknownWrapper.cs
- SmtpDigestAuthenticationModule.cs
- SuppressedPackageProperties.cs
- TypedElement.cs
- MultiPageTextView.cs
- ActionFrame.cs
- MenuItemStyleCollection.cs
- PopOutPanel.cs
- WindowHideOrCloseTracker.cs
- XmlSerializerNamespaces.cs
- SecurityBindingElement.cs
- ControlDesigner.cs
- SoapFaultCodes.cs
- XmlDesigner.cs
- DiscardableAttribute.cs
- MsiStyleLogWriter.cs
- TripleDES.cs
- PasswordTextNavigator.cs
- ModuleElement.cs
- SetUserLanguageRequest.cs
- ListBoxChrome.cs
- Registry.cs
- CompositionAdorner.cs
- InputChannelBinder.cs
- BindToObject.cs
- WebPartHelpVerb.cs
- ProxyWebPartManager.cs
- Intellisense.cs
- DoubleLink.cs
- OleAutBinder.cs
- ContextMarshalException.cs
- ForeignConstraint.cs
- MasterPageBuildProvider.cs
- ResourcePart.cs
- SchemaElementDecl.cs
- CalendarDayButton.cs
- RoleGroupCollection.cs
- TokenBasedSet.cs
- ModelEditingScope.cs
- InvalidEnumArgumentException.cs
- InputManager.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- XmlSchemaFacet.cs
- DesignerAttribute.cs
- AuthenticationService.cs
- BaseCodeDomTreeGenerator.cs
- TextDecorationCollection.cs
- IsolatedStoragePermission.cs
- BackStopAuthenticationModule.cs
- ExceptionNotification.cs
- WebPartDisplayMode.cs
- DrawItemEvent.cs
- FilteredDataSetHelper.cs
- ScrollChangedEventArgs.cs
- SEHException.cs
- AdornedElementPlaceholder.cs
- DESCryptoServiceProvider.cs
- Matrix3DConverter.cs
- RectConverter.cs
- XNodeValidator.cs
- Hashtable.cs
- ContextProperty.cs
- AttachedAnnotationChangedEventArgs.cs
- XPathParser.cs
- Expr.cs
- TrustLevelCollection.cs