Ejemplo n.º 1
0
        private static ElevationRequestResult RunElevated()
        {
            if (!ElevatedApplication.IsElevationRequired ||
                (ElevatedApplication.IsElevationRequired &&
                 ElevatedApplication.IsElevated))
            {
                return(ElevationRequestResult.ElevationNotRequired);
            }

            System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
            proc.WorkingDirectory = Environment.CurrentDirectory;
            proc.FileName         = Application.ExecutablePath;

            bool exitApplication = true;

            try
            {
                proc.StartElevated();
                return(ElevationRequestResult.ElevationGranted);
            }
            catch
            {
                if (ElevatedApplication.ElevationRequirement != ApplicationElevationRequirement.MixedElevation)
                {
                    return(ElevationRequestResult.ElevationRefused);
                }

                exitApplication = false;
                return(ElevationRequestResult.ElevationNotRequired);
            }
            finally
            {
                if (exitApplication)
                {
                    Application.Exit();
                }
            }
        }
        private static ElevationRequestResult RunElevated()
        {
            if (!ElevatedApplication.IsElevationRequired ||
                    (ElevatedApplication.IsElevationRequired
                        && ElevatedApplication.IsElevated))
                return ElevationRequestResult.ElevationNotRequired;

            System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
            proc.WorkingDirectory = Environment.CurrentDirectory;
            proc.FileName = Application.ExecutablePath;

            bool exitApplication = true;
            try
            {
                proc.StartElevated();
                return ElevationRequestResult.ElevationGranted;
            }
            catch
            {
                if (ElevatedApplication.ElevationRequirement != ApplicationElevationRequirement.MixedElevation)
                    return ElevationRequestResult.ElevationRefused;

                exitApplication = false;
                return ElevationRequestResult.ElevationNotRequired;
            }
            finally
            {
                if (exitApplication)
                    Application.Exit();
            }
        }