ServiceManagerHandle.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / ServiceManagerHandle.cs / 1 / ServiceManagerHandle.cs

                            //------------------------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------

namespace System.ServiceModel.Install 
{
    using Microsoft.Win32.SafeHandles; 
    using System; 
    using System.ComponentModel;
    using System.Diagnostics; 
    using System.Runtime.ConstrainedExecution;
    using System.Runtime.InteropServices;
    using System.Security.AccessControl;
    using System.Text; 

    internal class ServiceManagerHandle : SafeHandleZeroOrMinusOneIsInvalid 
    { 
        internal ServiceManagerHandle()
            : base(true) 
        {
        }

        internal ServiceHandle CreateService(string serviceName, string displayName, int serviceType, int startType, 
            int errorControl, string binaryPathName, string dependencies, string serviceStartName)
        { 
            const int desiredAccess = 
                NativeMethods.SERVICE_CHANGE_CONFIG | // setting the description
                NativeMethods.SERVICE_START | // setting the failure actions 
                NativeMethods.WRITE_DAC | // setting the DACL
                NativeMethods.ACCESS_SYSTEM_SECURITY; // setting the SACL
#pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally.
            ServiceHandle retVal = NativeMethods.CreateService(this, serviceName, displayName, desiredAccess, 
                serviceType, startType, errorControl, binaryPathName, null, IntPtr.Zero, dependencies,
                serviceStartName, null); 
            if ((retVal == null) || retVal.IsInvalid) 
            {
                throw new Win32Exception(); 
            }
            return retVal;
        }
 
        internal ServiceHandle OpenService(string serviceName, int desiredAccess)
        { 
#pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. 
            ServiceHandle retVal = NativeMethods.OpenService(this, serviceName, desiredAccess);
            if ((null == retVal) || retVal.IsInvalid) 
            {
                throw new Win32Exception();
            }
 
            return retVal;
        } 
 
        internal static ServiceManagerHandle OpenServiceManager()
        { 
#pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally.
            ServiceManagerHandle retVal = NativeMethods.OpenSCManager(null, null, NativeMethods.SC_MANAGER_ALL_ACCESS);
            if ((null == retVal) || retVal.IsInvalid)
            { 
                throw new Win32Exception();
            } 
 
            return retVal;
        } 

        protected override bool ReleaseHandle()
        {
#pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. 
            bool retVal = NativeMethods.CloseServiceHandle(handle);
            if (!retVal) 
            { 
                throw new Win32Exception();
            } 

            return retVal;
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK