Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

ChangeServiceConfig (advapi32)
 
.
Summary
TODO - a short description

C# Signature:

[DllImport("advapi32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
public static extern Boolean ChangeServiceConfig(IntPtr hService, UInt32 nServiceType, UInt32 nStartType, UInt32 nErrorControl, String lpBinaryPathName, String lpLoadOrderGroup, IntPtr lpdwTagId, String lpDependencies, String lpServiceStartName, String lpPassword, String lpDisplayName);

VB Signature:

Declare Function ChangeServiceConfig Lib "advapi32.dll" (TODO) As TODO

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

private const uint SERVICE_QUERY_CONFIG = 0x00000001;

private const uint SERVICE_CHANGE_CONFIG = 0x00000002;

private const uint SERVICE_QUERY_STATUS = 0x00000004;

private const uint SERVICE_ENUMERATE_DEPENDENTS = 0x00000008;

private const uint SERVICE_START = 0x00000010;

private const uint SERVICE_STOP = 0x00000020;

private const uint SERVICE_PAUSE_CONTINUE = 0x00000040;

private const uint SERVICE_INTERROGATE = 0x00000080;

private const uint SERVICE_USER_DEFINED_CONTROL = 0x00000100;

private const uint STANDARD_RIGHTS_REQUIRED = 0x000F0000;

private const uint SERVICE_ALL_ACCESS = ( STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG |

                    SERVICE_CHANGE_CONFIG    |
                    SERVICE_QUERY_STATUS     |
                    SERVICE_ENUMERATE_DEPENDENTS |
                    SERVICE_START        |
                    SERVICE_STOP         |
                    SERVICE_PAUSE_CONTINUE       |
                    SERVICE_INTERROGATE      |
                    SERVICE_USER_DEFINED_CONTROL);

Notes:

To use this function, make sure you call OpenService with the SERVICE_CHANGE_CONFIG flag. Look at OpenService and QueryServiceConfig for more examples.

Tips & Tricks:

Remember that the cofiguration settings will only be in effect the next time the service is started.

Sample Code:

IntPtr databaseHandle = OpenSCManager(null, null, SC_MANAGER_ALL_ACCESS);

if(databaseHandle == IntPtr.Zero)

    throw new System.Runtime.InteropServices.ExternalException(m_sLib.getRes    (AdminStringLibrary.ERROR_OPEN_SERVICE_MANAGER));

m_pServiceHandle = OpenService(databaseHandle, strServiceName, SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG);

if(m_pServiceHandle == IntPtr.Zero)

    throw new System.Runtime.InteropServices.ExternalException(String.Format(m_sLib.getRes    (AdminStringLibrary.ERROR_OPEN_SERVICE), m_strServiceName));

//This code is changing the password for the service.

if (!ChangeServiceConfig(m_pServiceHandle, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, SERVICE_NO_CHANGE, null, null,

IntPtr.Zero, null, null, value, null))

{

    int nError = Marshal.GetLastWin32Error();
    Win32Exception win32Exception = new Win32Exception(nError);
    throw new System.Runtime.InteropServices.ExternalException(String.Format(m_sLib.getRes    (AdminStringLibrary.COULDNOT_CHANGE_PASSWORD), m_strServiceName) +
        " : " + win32Exception.Message);

}

Documentation

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Find References
Show Printable Version
Revisions