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
- SystemColors.cs
- BaseTemplateBuildProvider.cs
- XmlElementAttribute.cs
- XmlReaderSettings.cs
- SignatureResourcePool.cs
- CallbackException.cs
- ListBox.cs
- PropVariant.cs
- PrimitiveOperationFormatter.cs
- XXXInfos.cs
- TypeGeneratedEventArgs.cs
- MemberMemberBinding.cs
- TextProviderWrapper.cs
- SmtpNegotiateAuthenticationModule.cs
- CryptoConfig.cs
- RelationshipEnd.cs
- ListGeneralPage.cs
- PropertiesTab.cs
- JsonReaderWriterFactory.cs
- SubMenuStyleCollectionEditor.cs
- TypefaceCollection.cs
- HttpHandlerActionCollection.cs
- StringExpressionSet.cs
- HtmlShimManager.cs
- DataGridrowEditEndingEventArgs.cs
- JournalEntryListConverter.cs
- Matrix3D.cs
- PixelShader.cs
- XmlIncludeAttribute.cs
- DataSvcMapFileSerializer.cs
- VirtualizedItemPattern.cs
- DataGridPageChangedEventArgs.cs
- EndSelectCardRequest.cs
- _ScatterGatherBuffers.cs
- RefType.cs
- baseaxisquery.cs
- RadialGradientBrush.cs
- SqlMethodTransformer.cs
- SystemIPAddressInformation.cs
- NativeMethodsOther.cs
- PreviewPrintController.cs
- HtmlImage.cs
- MultiSelector.cs
- SqlXmlStorage.cs
- CapabilitiesUse.cs
- LocalClientSecuritySettingsElement.cs
- BaseTemplateParser.cs
- EmptyStringExpandableObjectConverter.cs
- DecimalAnimationUsingKeyFrames.cs
- OleDbConnectionFactory.cs
- InvalidWorkflowException.cs
- BindingSource.cs
- EnumConverter.cs
- ControlBindingsConverter.cs
- InputReferenceExpression.cs
- SqlCommand.cs
- GridViewEditEventArgs.cs
- ServicePoint.cs
- SynchronizedDispatch.cs
- WebPartZone.cs
- XPathDescendantIterator.cs
- ReliableMessagingHelpers.cs
- SQlBooleanStorage.cs
- UnionCqlBlock.cs
- DeclaredTypeValidator.cs
- ProxyGenerator.cs
- DesigntimeLicenseContextSerializer.cs
- TabItemAutomationPeer.cs
- ThicknessKeyFrameCollection.cs
- UserMapPath.cs
- VersionedStreamOwner.cs
- ObjectDataSourceEventArgs.cs
- TypeDelegator.cs
- Exception.cs
- TextOptionsInternal.cs
- PenThread.cs
- RemotingConfigParser.cs
- COM2ExtendedUITypeEditor.cs
- XsdBuilder.cs
- StylusPointCollection.cs
- CompensatableSequenceActivity.cs
- TrustManagerMoreInformation.cs
- Menu.cs
- PropertyEntry.cs
- ToolStripOverflow.cs
- EventLevel.cs
- BypassElementCollection.cs
- TypeBrowser.xaml.cs
- ObjectDataSourceFilteringEventArgs.cs
- ObjectQuery_EntitySqlExtensions.cs
- TimeStampChecker.cs
- ConfigurationStrings.cs
- FontSourceCollection.cs
- GridViewHeaderRowPresenter.cs
- Msec.cs
- Debugger.cs
- JsonFormatReaderGenerator.cs
- ApplicationFileParser.cs
- ConfigurationPropertyCollection.cs
- xmlglyphRunInfo.cs