Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than advapi32, prefix the name with the module name and a period.
<DllImport("AdvApi32", CharSet:=CharSet.Auto, entrypoint:="ChangeServiceConfigA")> _
Public Function ChangeServiceConfig(ByVal hService As Integer, ByVal dwServiceType As ServiceType, ByVal dwStartType As ServiceStartType, ByVal dwErrorControl As ServiceErrorControl, ByVal lpBinaryPathName As String, ByVal lpLoadOrderGroup As String, ByVal lpdwTagId As Integer, ByVal lpDependencies As String, ByVal lpServiceStartName As String, ByVal lpPassword As String, ByVal lpDisplayName As String) As Boolean
End Function
If the configuration is changed for a service that is running, with the exception of lpDisplayName, the changes do not take effect until the service is stopped.
Security Remarks:
Setting the lpServiceStartName parameter changes the logon account of the service. This can cause problems. If you have registered a service principal name (SPN), it would now be registered on the wrong account. Similarly, if you have used an ACE to grant access to a service, it would now grant access to the wrong account.
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("Open Service Manager Error");
m_pServiceHandle = OpenService(databaseHandle, strServiceName, SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG);
if(m_pServiceHandle == IntPtr.Zero)
throw new System.Runtime.InteropServices.ExternalException("Open Service Error");
//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("Could not change password : " + win32Exception.Message);
}
Changes the optional configuration parameters of a service.
9/29/2021 2:48:28 AM - -90.242.135.188
Changes the optional configuration parameters of a service.
8/8/2011 7:49:05 AM - -87.205.225.145
Changes the optional configuration parameters of a service.
9/29/2021 2:48:28 AM - -90.242.135.188
The QueryServiceConfig2 function retrieves the optional configuration parameters of the specified service. At present, these are the service description and the failure actions.
2/6/2011 11:47:36 PM - Smoke-190.64.103.228
The OpenService function opens an existing service.
5/6/2020 6:55:40 AM - maxbgn-178.74.224.122
The OpenService function opens an existing service.
5/6/2020 6:55:40 AM - maxbgn-178.74.224.122
The QueryServiceConfig2 function retrieves the optional configuration parameters of the specified service. At present, these are the service description and the failure actions.
2/6/2011 11:47:36 PM - Smoke-190.64.103.228
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).