Hans Leidekker : sc: Implement the start and stop commands.

Alexandre Julliard julliard at winehq.org
Mon May 3 11:54:07 CDT 2010


Module: wine
Branch: master
Commit: e86ed3bf91e980cb875f463f17ac8d045989ab83
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e86ed3bf91e980cb875f463f17ac8d045989ab83

Author: Hans Leidekker <hans at meelstraat.net>
Date:   Mon May  3 12:57:57 2010 +0200

sc: Implement the start and stop commands.

---

 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");
 




More information about the wine-cvs mailing list