[4/4] programs/sc: Implement the start and stop commands.
Hans Leidekker
hans at meelstraat.net
Mon May 3 05:57:57 CDT 2010
---
programs/sc/sc.c | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/programs/sc/sc.c b/programs/sc/sc.c
index 32ffb85..e4df09a 100644
--- a/programs/sc/sc.c
+++ b/programs/sc/sc.c
@@ -219,7 +219,10 @@ int wmain( int argc, const WCHAR *argv[] )
static const WCHAR descriptionW[] = {'d','e','s','c','r','i','p','t','i','o','n',0};
static const WCHAR failureW[] = {'f','a','i','l','u','r','e',0};
static const WCHAR deleteW[] = {'d','e','l','e','t','e',0};
+ static const WCHAR startW[] = {'s','t','a','r','t',0};
+ static const WCHAR stopW[] = {'s','t','o','p',0};
SC_HANDLE manager, service;
+ SERVICE_STATUS status;
BOOL ret = FALSE;
if (argc < 3) usage();
@@ -305,6 +308,28 @@ int wmain( int argc, const WCHAR *argv[] )
}
else WINE_TRACE("failed to open service %u\n", GetLastError());
}
+ else if (!strcmpiW( argv[1], startW ))
+ {
+ service = OpenServiceW( manager, argv[2], SERVICE_START );
+ if (service)
+ {
+ ret = StartServiceW( service, argc - 3, argv + 3 );
+ if (!ret) WINE_TRACE("failed to start service %u\n", GetLastError());
+ CloseServiceHandle( service );
+ }
+ else WINE_TRACE("failed to open service %u\n", GetLastError());
+ }
+ else if (!strcmpiW( argv[1], stopW ))
+ {
+ service = OpenServiceW( manager, argv[2], SERVICE_STOP );
+ if (service)
+ {
+ ret = ControlService( service, SERVICE_CONTROL_STOP, &status );
+ if (!ret) WINE_TRACE("failed to stop service %u\n", GetLastError());
+ CloseServiceHandle( service );
+ }
+ else WINE_TRACE("failed to open service %u\n", GetLastError());
+ }
else
WINE_FIXME("command not supported\n");
--
1.7.0.4
More information about the wine-patches
mailing list