private void CreateService(string binPath, string arguments) { WindowsIdentity.GetCurrent().IsElevated().Should().BeTrue("process was not running as admin. You cannot create a service without running as administrator."); var scArgs = string.Format("create {0} start=auto binpath=\"{1} {2}\"", ServiceName, binPath, arguments); var result = GeneralProcessRunner.Run(@"C:\Windows\system32\sc.exe", scArgs); if (result.ExitCode != 0) { throw new Exception(string.Format(@"Could not create service: C:\Windows\system32\sc.exe {0}{1}Standard output: {2}{1}Error output:{3}", scArgs, Environment.NewLine, result.StandardOutput, result.ErrorOutput)); } Log.DebugFormat(@"Creating service C:\Windows\system32\sc.exe {0}", scArgs); Log.DebugFormat(@"Creating service standard output: {0}", result.StandardOutput); Log.DebugFormat(@"Creating service error output: {0}", result.ErrorOutput); }
private void DeleteService() { var scArgs = string.Format("delete {0}", ServiceName); var result = GeneralProcessRunner.Run(@"C:\Windows\system32\sc.exe", scArgs); if (result.ExitCode != 0 && result.ExitCode != ServiceDoesNotExist) { throw new Exception(string.Format(@"Could not delete service: C:\Windows\system32\sc.exe {0}{1}Standard output: {2}{1}Error output:{3}{1}Exit code:{4}", scArgs, Environment.NewLine, result.StandardOutput, result.ErrorOutput, result.ExitCode)); } Log.DebugFormat(@"Deleting service C:\Windows\system32\sc.exe {0}", scArgs); Log.DebugFormat(@"Deleting service standard output: {0}", result.StandardOutput); Log.DebugFormat(@"Deleting service error output: {0}", result.ErrorOutput); Log.DebugFormat(@"Deleting service exit code: {0}", result.ErrorOutput); }