コード例 #1
0
ファイル: ChoButtonEx.cs プロジェクト: lanicon/Cinchoo
 public static void SetUACShield(this Button @this, bool showShield = true)
 {
     if (!ChoWindowsIdentity.IsAdministrator() && ChoEnvironment.AtLeastVista())
     {
         //Note: make sure the button FlatStyle = FlatStyle.System
         @this.FlatStyle = FlatStyle.System;
         // BCM_SETSHIELD = 0x0000160C
         ChoUser32.SendMessage(@this.Handle, ChoUser32.BCM_SETSHIELD, 0, showShield ? 0xFFFFFFFF : 0);
     }
 }
コード例 #2
0
 protected override void OnClick(EventArgs e)
 {
     if (ChoWindowsIdentity.IsAdministrator())
     {
         base.OnClick(e);
     }
     else
     {
         ChoApplication.RestartAsAdmin();
     }
 }
コード例 #3
0
        public static void SetUACShield(this ToolStripMenuItem @this, bool showShield = true)
        {
            if (!ChoWindowsIdentity.IsAdministrator() && ChoEnvironment.AtLeastVista())
            {
                //SHSTOCKICONINFO iconResult = new SHSTOCKICONINFO();
                //iconResult.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(iconResult);

                //ChoShell32.SHGetStockIconInfo(
                //    SHSTOCKICONID.SIID_SHIELD,
                //    SHGSI.SHGSI_ICON | SHGSI.SHGSI_SMALLICON,
                //    ref iconResult);

                //@this.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
                //@this.Image = Bitmap.FromHicon(iconResult.hIcon);
                @this.ImageScaling = ToolStripItemImageScaling.None;
                @this.Image        = ChoEnvironment.GetUACShieldImage();
            }
        }
コード例 #4
0
ファイル: ChoService.cs プロジェクト: lanicon/Cinchoo
        internal static void Initialize(ChoApplicationHost host)
        {
            if (!ChoApplicationHost.IsApplicationHostUsed)
            {
                return;
            }

            if (!Environment.UserInteractive)
            {
                //Debugger.Break();
                ChoService service = new ChoService(host);

                service.CanHandlePowerEvent         = ChoServiceInstallerSettings.Me.CanHandlePowerEvent;
                service.CanHandleSessionChangeEvent = ChoServiceInstallerSettings.Me.CanHandleSessionChangeEvent;
                service.CanPauseAndContinue         = ChoServiceInstallerSettings.Me.CanPauseAndContinue;
                service.CanShutdown = ChoServiceInstallerSettings.Me.CanShutdown;
                service.CanStop     = ChoServiceInstallerSettings.Me.CanStop;
                service.AutoLog     = ChoServiceInstallerSettings.Me.AutoLog;
                //service.ExitCode = ChoServiceInstallerSettings.Me.ExitCode;

                //Windows Service Mode
                ServiceBase[] ServicesToRun = new ServiceBase[]
                {
                    service
                };
                ServiceBase.Run(ServicesToRun);
            }
            else
            {
                //Parse command line arguments, install,
                //try
                //{
                ChoFrameworkCmdLineArgs frameworkCmdLineArgs = new ChoFrameworkCmdLineArgs();
                frameworkCmdLineArgs.Init();
                ChoServiceCommandLineArgs serviceCmdLineArgs = new ChoServiceCommandLineArgs();
                serviceCmdLineArgs.Init();

                ServiceController sc = new ServiceController(ChoServiceCommandLineArgs.GetServiceName(), Environment.MachineName);
                if (serviceCmdLineArgs.InstallService)
                {
                    ChoManagedInstallerClass.InstallService();

                    //Save the command line parameters
                    //if (serviceCmdLineArgs.ServiceParams != null)
                    //{
                    //    try
                    //    {
                    //        ChoRegistryKey _rkAppRun = new ChoRegistryKey(String.Format(RegRunSubKey.FormatString(ChoApplication.Host.ServiceName), true));
                    //        _rkAppRun.SetValue("ImagePath", "{0} {1}".FormatString(ChoAssembly.GetEntryAssembly().Location, ChoServiceCommandLineArgs.GetServiceParams().Replace("'", @"""")));
                    //    }
                    //    catch (Exception ex)
                    //    {
                    //        System.Diagnostics.Trace.TraceError(ex.ToString());
                    //    }
                    //}
                }
                else if (serviceCmdLineArgs.UninstallService)
                {
                    ChoManagedInstallerClass.UninstallService();
                }
                else if (serviceCmdLineArgs.StartService)
                {
                    if (!ChoWindowsIdentity.IsAdministrator())
                    {
                        ChoApplication.RestartAsAdmin();
                        return;
                    }

                    if (serviceCmdLineArgs.ServiceParams == null ||
                        serviceCmdLineArgs.ServiceParams.Length == 0)
                    {
                        //ChoEnvironment.CommandLineArgs = Environment.GetCommandLineArgs().Skip(1).ToArray();
                    }
                    else
                    {
                        string commandLineArgs = null;
                        if (serviceCmdLineArgs.ServiceParams.StartsWith("\"") &&
                            serviceCmdLineArgs.ServiceParams.EndsWith("\""))
                        {
                            commandLineArgs = serviceCmdLineArgs.ServiceParams.Substring(1, serviceCmdLineArgs.ServiceParams.Length - 2);
                        }
                        else
                        {
                            commandLineArgs = serviceCmdLineArgs.ServiceParams;
                        }

                        ChoEnvironment.CommandLineArgs = commandLineArgs.SplitNTrim(' ');
                    }

                    sc.Start(ChoEnvironment.CommandLineArgs);

                    if (ChoServiceInstallerSettings.Me.Timeout > 0)
                    {
                        sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(ChoServiceInstallerSettings.Me.Timeout));
                    }
                }
                else if (serviceCmdLineArgs.StopService)
                {
                    if (!ChoWindowsIdentity.IsAdministrator())
                    {
                        ChoApplication.RestartAsAdmin();
                        return;
                    }
                    sc.Stop();
                }
                else if (serviceCmdLineArgs.PauseService)
                {
                    if (!ChoWindowsIdentity.IsAdministrator())
                    {
                        ChoApplication.RestartAsAdmin();
                        return;
                    }
                    sc.Pause();
                }
                else if (serviceCmdLineArgs.ContinueService)
                {
                    if (!ChoWindowsIdentity.IsAdministrator())
                    {
                        ChoApplication.RestartAsAdmin();
                        return;
                    }
                    sc.Continue();
                }
                else if (serviceCmdLineArgs.ExecuteCommand != Int32.MinValue)
                {
                    if (!ChoWindowsIdentity.IsAdministrator())
                    {
                        ChoApplication.RestartAsAdmin();
                        return;
                    }
                    sc.ExecuteCommand(serviceCmdLineArgs.ExecuteCommand);
                }
                else
                {
                    //ChoApplicationMode? applicationMode = ChoFrameworkCmdLineArgs.GetApplicationMode();
                    //if (applicationMode != null)
                    //    ChoApplication.ApplicationMode = applicationMode.Value;

                    //ChoProfile.WriteLine(ChoApplication.ApplicationMode.ToString());
                    if (ChoApplication.ApplicationMode == ChoApplicationMode.Windows)
                    {
                        ChoApplication.Host.OnStartService(ChoEnvironment.CommandLineArgs);
                    }
                    else if (ChoApplication.ApplicationMode == ChoApplicationMode.Console)
                    {
                        if (ChoConsoleSettings.Me.ConsoleMode != uint.MinValue && ChoWindowsManager.ConsoleWindowHandle != IntPtr.Zero)
                        {
                            ChoKernel32.SetConsoleMode(ChoWindowsManager.ConsoleWindowHandle, (uint)ChoConsoleSettings.Me.ConsoleMode);
                        }

                        ChoApplicationHost.RegisterConsoleControlHandler();
                        ChoApplication.Host.OnStartService(ChoEnvironment.CommandLineArgs);
                        //ChoApplication.Host.OnStopService();
                    }
                    else if (ChoApplication.ApplicationMode == ChoApplicationMode.Web)
                    {
                        ChoApplication.Host.OnStartService(ChoEnvironment.CommandLineArgs);
                    }
                }
                //}
                //catch (ChoFatalApplicationException)
                //{
                //    throw;
                //}
                //catch (ChoCommandLineArgException argEx)
                //{
                //    ChoApplication.DisplayMsg(argEx.Message);
                //    throw;
                //}
                //catch (ChoCommandLineArgUsageException usageEx)
                //{
                //    ChoApplication.DisplayMsg(usageEx.Message);
                //    throw;
                //}
                //catch (Exception ex)
                //{
                //    ChoApplication.DisplayMsg(ex.Message, ex);
                //    throw;
                //}
            }
        }