Example #1
0
        private void treeViewDependencies_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode node = e.Node;

            if (Configurations.currentPlatform == LikewiseTargetPlatform.Windows)
            {
                if (node != null && node.Nodes.Count == 0)
                {
                    TreeNode[] dependencyServices = ServiceManagerWindowsWrapper.WMIGetDependencyServices(node.Tag as string);
                    if (dependencyServices != null && dependencyServices.Length > 0)
                    {
                        node.Nodes.AddRange(dependencyServices);
                    }
                }
            }
            else
            {
                IntPtr pServiceHandle = ServiceManagerInteropWrapper.ApiLwSmAcquireServiceHandle(node.Tag as string);
                ServiceManagerApi.LW_SERVICE_INFO serviceInfo = ServiceManagerInteropWrapper.ApiLwSmQueryServiceInfo(pServiceHandle);
                if (serviceInfo.ppwszDependencies != null && serviceInfo.ppwszDependencies.Length != 0)
                {
                    TreeNode[] servicelist = new TreeNode[serviceInfo.ppwszDependencies.Length];
                    for (int idx = 0; idx < serviceInfo.ppwszDependencies.Length; idx++)
                    {
                        servicelist[idx] = new TreeNode(serviceInfo.pwszName);
                    }

                    if (servicelist != null && servicelist.Length != 0)
                    {
                        node.Nodes.AddRange(servicelist);
                    }
                }
                ServiceManagerInteropWrapper.ApiLwSmReleaseServiceHandle(pServiceHandle);
            }
        }
Example #2
0
        private void treeViewDependents_AfterExpand(object sender, TreeViewEventArgs e)
        {
            TreeNode node = e.Node;

            if (Configurations.currentPlatform == LikewiseTargetPlatform.Windows)
            {
                if (node != null && node.Nodes.Count == 0)
                {
                    TreeNode[] dependentServices = ServiceManagerWindowsWrapper.WMIGetDependentServices(node.Tag as string);
                    if (dependentServices != null && dependentServices.Length > 0)
                    {
                        node.Nodes.AddRange(dependentServices);
                    }
                }
            }
            else
            {
                string[] sServicedepencies = ServiceManagerInteropWrapper.ApiLwSmEnumerateServices();
                if (sServicedepencies != null)
                {
                    foreach (string name in sServicedepencies)
                    {
                        IntPtr pHandle = ServiceManagerInteropWrapper.ApiLwSmAcquireServiceHandle(name);
                        if (pHandle != IntPtr.Zero)
                        {
                            ServiceManagerApi.LW_SERVICE_INFO serviceInfo = ServiceManagerInteropWrapper.ApiLwSmQueryServiceInfo(pHandle);
                            if (serviceInfo.ppwszDependencies != null && serviceInfo.ppwszDependencies.Length != 0)
                            {
                                foreach (string service in serviceInfo.ppwszDependencies)
                                {
                                    if ((node.Tag as string).Equals(service, StringComparison.InvariantCultureIgnoreCase))
                                    {
                                        node.Nodes.Add(service);
                                    }
                                }
                            }
                            ServiceManagerInteropWrapper.ApiLwSmReleaseServiceHandle(pHandle);
                        }
                    }
                }
            }
        }
        public override void Refresh()
        {
            base.Refresh();

            if (plugin == null)
            {
                plugin = pi as ServiceManagerPlugin;
            }

            this.lblCaption.Text = plugin.GetPlugInNode().Text;

            if (plugin.IsConnectionSuccess)
            {
                if (Configurations.currentPlatform == LikewiseTargetPlatform.Windows)
                {
                    if (!plugin.Do_LogonSCManager())
                    {
                        Logger.Log("Service Control Manager.Refresh(): Failed to authenticate the specified user");
                        return;
                    }
                }
            }
            else
            {
                return;
            }

            if (treeNode.Nodes.Count == 0 || treeNode.IsModified)
            {
                if (Configurations.currentPlatform == LikewiseTargetPlatform.Windows)
                {
                    Dictionary <string, string[]> services = ServiceManagerWindowsWrapper.EnumManagementServices();
                    if (services != null && services.Count != 0)
                    {
                        foreach (string name in services.Keys)
                        {
                            ListViewItem lvItem = new ListViewItem(services[name]);
                            lvItem.Tag = name;
                            lvService.Items.Add(lvItem);
                        }
                    }
                }
                else
                {
                    string[] sServiceEnum = ServiceManagerInteropWrapper.ApiLwSmEnumerateServices();
                    if (sServiceEnum != null)
                    {
                        foreach (string name in sServiceEnum)
                        {
                            string serviceState = string.Empty;
                            IntPtr pHandle      = ServiceManagerInteropWrapper.ApiLwSmAcquireServiceHandle(name);
                            if (pHandle != IntPtr.Zero)
                            {
                                ServiceManagerApi.LW_SERVICE_INFO   serviceInfo   = ServiceManagerInteropWrapper.ApiLwSmQueryServiceInfo(pHandle);
                                ServiceManagerApi.LW_SERVICE_STATUS serviceStatus = ServiceManagerInteropWrapper.ApiLwSmQueryServiceStatus(pHandle);

                                switch (serviceStatus.state)
                                {
                                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_DEAD:
                                    serviceState = "Dead";
                                    break;

                                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_PAUSED:
                                    serviceState = "Paused";
                                    break;

                                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_RUNNING:
                                    serviceState = "Running";
                                    break;

                                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STARTING:
                                    serviceState = "Starting";
                                    break;

                                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STOPPED:
                                    serviceState = "Stopped";
                                    break;

                                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STOPPING:
                                    serviceState = "Stopping";
                                    break;
                                }

                                ListViewItem lvItem = new ListViewItem(new string[] { name,
                                                                                      serviceInfo.pwszDescription,
                                                                                      serviceState,
                                                                                      (serviceInfo.bAutostart)?"Automatic": "Manual",
                                                                                      "root" });
                                lvItem.Tag = name;
                                lvService.Items.Add(lvItem);

                                ServiceManagerInteropWrapper.ApiLwSmReleaseServiceHandle(pHandle);
                            }
                        }
                    }
                }
            }

            lvService.Columns[lvService.Columns.Count - 1].Width = 200;
        }
Example #4
0
        private void GetUnixServiceDependencies()
        {
            IntPtr pServiceHandle = ServiceManagerInteropWrapper.ApiLwSmAcquireServiceHandle(serviceName);

            if (pServiceHandle == IntPtr.Zero)
            {
                return;
            }

            //Counting of Dependencies
            ServiceManagerApi.LW_SERVICE_INFO serviceInfo = ServiceManagerInteropWrapper.ApiLwSmQueryServiceInfo(pServiceHandle);
            if (serviceInfo.ppwszDependencies != null && serviceInfo.ppwszDependencies.Length != 0)
            {
                TreeNode[] servicelist = new TreeNode[serviceInfo.ppwszDependencies.Length];
                for (int idx = 0; idx < serviceInfo.ppwszDependencies.Length; idx++)
                {
                    TreeNode tn = new TreeNode(serviceInfo.ppwszDependencies[idx]);
                    tn.Tag           = serviceInfo.pwszName;
                    servicelist[idx] = tn;
                }

                if (servicelist != null && servicelist.Length != 0)
                {
                    treeViewDependencies.Nodes.AddRange(servicelist);
                }
                else
                {
                    treeViewDependencies.Nodes.Add(new TreeNode("<No Dependencies>"));
                }
            }
            ServiceManagerInteropWrapper.ApiLwSmReleaseServiceHandle(pServiceHandle);

            //Counting of Dependents
            List <TreeNode> dependentservices = new List <TreeNode>();

            string[] sServiceEnum = ServiceManagerInteropWrapper.ApiLwSmEnumerateServices();
            if (sServiceEnum != null)
            {
                foreach (string name in sServiceEnum)
                {
                    IntPtr pHandle = ServiceManagerInteropWrapper.ApiLwSmAcquireServiceHandle(name);
                    if (pHandle != IntPtr.Zero)
                    {
                        serviceInfo = ServiceManagerInteropWrapper.ApiLwSmQueryServiceInfo(pHandle);

                        if (serviceInfo.ppwszDependencies != null && serviceInfo.ppwszDependencies.Length != 0)
                        {
                            foreach (string service in serviceInfo.ppwszDependencies)
                            {
                                if (serviceName.Equals(service, StringComparison.InvariantCultureIgnoreCase))
                                {
                                    TreeNode tn = new TreeNode(name);
                                    tn.Tag = name;
                                    dependentservices.Add(tn);
                                    break;
                                }
                            }
                        }
                        ServiceManagerInteropWrapper.ApiLwSmReleaseServiceHandle(pHandle);
                    }
                }

                if (dependentservices.Count != 0)
                {
                    TreeNode[] services = new TreeNode[dependentservices.Count];
                    dependentservices.CopyTo(services);
                    treeViewDependents.Nodes.AddRange(services);
                }
                else
                {
                    treeViewDependents.Nodes.Add(new TreeNode("<No Dependencies>"));
                }
            }
        }
Example #5
0
        private void GetUnixServiceInfo()
        {
            txtStartParameters.Text = string.Empty;
            IntPtr pHandle = ServiceManagerInteropWrapper.ApiLwSmAcquireServiceHandle(serviceName);

            if (pHandle != IntPtr.Zero)
            {
                string sArgs = string.Empty;
                ServiceManagerApi.LW_SERVICE_STATUS serviceStatus = ServiceManagerInteropWrapper.ApiLwSmQueryServiceStatus(pHandle);
                ServiceManagerApi.LW_SERVICE_INFO   serviceInfo   = ServiceManagerInteropWrapper.ApiLwSmQueryServiceInfo(pHandle);

                lblServiceNameValue.Text = serviceName;
                txtDisplayName.Text      = serviceInfo.pwszName;
                txtDescription.Text      = serviceInfo.pwszDescription;
                txtPathToExecute.Text    = serviceInfo.pwszPath;

                foreach (string args in serviceInfo.ppwszArgs)
                {
                    txtStartParameters.Text += " " + args;
                }

                txtStartParameters.Text = txtStartParameters.Text.Trim();
                btnPause.Visible        = btnResume.Visible = false;

                cmbStartupType.SelectedIndex = serviceInfo.bAutostart ? 0 : 1;

                switch (serviceStatus.state)
                {
                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_DEAD:
                    lblServiceStatusValue.Text = "Dead";
                    break;

                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_PAUSED:
                    lblServiceStatusValue.Text = "Paused";
                    break;

                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_RUNNING:
                    lblServiceStatusValue.Text = "Running";
                    break;

                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STARTING:
                    lblServiceStatusValue.Text = "Starting";
                    break;

                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STOPPED:
                    lblServiceStatusValue.Text = "Stopped";
                    break;

                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STOPPING:
                    lblServiceStatusValue.Text = "Stopping";
                    break;
                }

                switch (serviceStatus.state)
                {
                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_RUNNING:
                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STARTING:
                    btnStart.Enabled = false;
                    btnStop.Enabled  = true;
                    break;


                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STOPPED:
                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_STOPPING:
                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_PAUSED:
                case ServiceManagerApi.LW_SERVICE_STATE.LW_SERVICE_STATE_DEAD:
                    btnStart.Enabled = true;
                    btnStop.Enabled  = false;
                    break;
                }
                ServiceManagerInteropWrapper.ApiLwSmReleaseServiceHandle(pHandle);
            }
        }