From fb9794835b764beea00bb040c68a72f3a1ae0360 Mon Sep 17 00:00:00 2001
From: Antony Lesuisse <al@openerp.com>
Date: Tue, 18 Nov 2014 23:27:48 +0100
Subject: [PATCH] [FIX] windows ctrl-c from cmd as a non admin

return False when calling is_running_as_nt_service from a non adminstrator
account.
---
 openerp/service/server.py |  2 +-
 openerp/tools/osutil.py   | 11 +++++++----
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/openerp/service/server.py b/openerp/service/server.py
index 617c2d757df7..5ea05df81127 100644
--- a/openerp/service/server.py
+++ b/openerp/service/server.py
@@ -26,7 +26,7 @@ if os.name == 'posix':
     import resource
 else:
     # Windows shim
-    signal.SIGHUP = 0
+    signal.SIGHUP = -1
 
 # Optional process names for workers
 try:
diff --git a/openerp/tools/osutil.py b/openerp/tools/osutil.py
index 94684d34673d..afe3fc459f39 100644
--- a/openerp/tools/osutil.py
+++ b/openerp/tools/osutil.py
@@ -139,10 +139,13 @@ else:
             finally:
                 ws.CloseServiceHandle(srv)
 
-        with close_srv(ws.OpenSCManager(None, None, ws.SC_MANAGER_ALL_ACCESS)) as hscm:
-            with close_srv(wsu.SmartOpenService(hscm, nt_service_name, ws.SERVICE_ALL_ACCESS)) as hs:
-                info = ws.QueryServiceStatusEx(hs)
-                return info['ProcessId'] == getppid()
+        try:
+            with close_srv(ws.OpenSCManager(None, None, ws.SC_MANAGER_ALL_ACCESS)) as hscm:
+                with close_srv(wsu.SmartOpenService(hscm, nt_service_name, ws.SERVICE_ALL_ACCESS)) as hs:
+                    info = ws.QueryServiceStatusEx(hs)
+                    return info['ProcessId'] == getppid()
+        except Exception:
+            return False
 
 if __name__ == '__main__':
     from pprint import pprint as pp
-- 
GitLab