.NET以管理员身份运行程序

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Windows.Forms;

namespace RunAsAdministratorDemo
{
    /// <summary>
    ///     .NET以管理员身份运行程序
    ///     LDH @ 2018-1-5
    /// </summary>
    internal class Program
    {
        /// <summary>
        ///     数据库服务操作
        /// </summary>
        public enum DatabaseServiceOperation
        {
            /// <summary>
            ///     启动 Ms Sql Server 服务
            /// </summary>
            [Description("启动 Ms Sql Server 服务")] StartMsSqlServer = 1,

            /// <summary>
            ///     终止 Ms Sql Server 服务
            /// </summary>
            [Description("终止 Ms Sql Server 服务")] StopMsSqlServer = 2,

            /// <summary>
            ///     启动 My Sql  服务
            /// </summary>
            [Description("启动 My MySQL  服务")] StartMySql = 3,

            /// <summary>
            ///     终止 MySQL 服务
            /// </summary>
            [Description("终止 MySQL 服务")] StopMySql = 4,

            /// <summary>
            ///     启动 Redis  服务
            /// </summary>
            [Description("启动 Redis  服务")] StartRedis = 5,

            /// <summary>
            ///     终止 Redis 服务
            /// </summary>
            [Description("终止 Redis 服务")] StopRedis = 6,

            /// <summary>
            ///     启动 MongoDB  服务
            /// </summary>
            [Description("启动 MongoDB  服务")] StartMongoDb = 7,

            /// <summary>
            ///     终止 MongoDB 服务
            /// </summary>
            [Description("终止 MongoDB 服务")] StopMongoDb = 8
        }

        private static void Main()
        {
            Console.Title = ".NET以管理员身份运行相应的程序 By LDH @ " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            HowToRunAsAdministrator();

            Console.ReadKey();
        }

        /// <summary>
        ///     如何以管理员身份运行
        /// </summary>
        private static void HowToRunAsAdministrator()
        {
            while (true)
            {
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.ForegroundColor = ConsoleColor.White;
                Console.Clear();

                Console.WriteLine("\t 输入指定的数字,执行相应操作!");

                PrintLine();

                Console.WriteLine("【0】退出程序");

                PrintLine();

                Console.WriteLine("【1】启动 Ms Sql Sever");
                Console.WriteLine("【2】终止 Ms Sql Server");

                PrintLine();

                Console.WriteLine("【3】启动 MySQL 服务");
                Console.WriteLine("【4】终止 MySQL  服务");

                PrintLine();

                Console.WriteLine("【5】启动 Redis  服务");
                Console.WriteLine("【6】终止 Redis  服务");

                PrintLine();

                Console.WriteLine("【7】启动 MongoDB  服务");
                Console.WriteLine("【8】终止 MongoDB  服务");

                PrintLine();

                var input = Console.ReadLine();

                var operateNum = Convert.ToInt32(input);
                if (operateNum != 0)
                {
                    var process = new Process
                    {
                        StartInfo =
                        {
                            Verb = "runas",
                            UseShellExecute = true,
                            FileName = "cmd.exe",
                            Arguments = GetArgumentString((DatabaseServiceOperation) operateNum)
                        }
                    };

                   process.Start();
                   process.WaitForExit();

                   MessageBox.Show("执行成功!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    Environment.Exit(0);
                }
            }
        }

        /// <summary>
        ///     根据数据库服务的类型获取对应的执行命令字符串
        /// </summary>
        /// <param name="operation">数据库服务的类型</param>
        /// <returns>对应的服务执行命令字符串</returns>
        private static string GetArgumentString(DatabaseServiceOperation operation)
        {
            var argumentsStr = string.Empty;

            switch (operation)
            {
                case DatabaseServiceOperation.StartMsSqlServer:
                    argumentsStr = "/C net start mssqlserver";
                    break;

                case DatabaseServiceOperation.StopMsSqlServer:
                    argumentsStr = "/C net stop mssqlserver";
                    break;

                case DatabaseServiceOperation.StartMySql:
                    argumentsStr = "/C net start mysql";
                    break;

                case DatabaseServiceOperation.StopMySql:
                    argumentsStr = "/C net stop mysql";
                    break;

                case DatabaseServiceOperation.StartRedis:
                    argumentsStr = "/C net start redis";
                    break;

                case DatabaseServiceOperation.StopRedis:
                    argumentsStr = "/C net stop redis";
                    break;

                case DatabaseServiceOperation.StartMongoDb:
                    argumentsStr = "/C net start mongodb";
                    break;

                case DatabaseServiceOperation.StopMongoDb:
                    argumentsStr = "/C net stop mongodb";
                    break;
            }

            return argumentsStr;
        }

        /// <summary>
        ///     分割线
        /// </summary>
        private static void PrintLine()
        {           Console.WriteLine("-----------------------------------------------------");
        }
    }
}

运行效果:

原文地址:https://www.cnblogs.com/LifeDecidesHappiness/p/8203592.html

时间: 2024-08-04 00:14:18

.NET以管理员身份运行程序的相关文章

C# windows权限问题 程序如何以管理员身份运行程序

程序如何以管理员身份运行程序 最近在项目运行过程中遇到了一个问题,就是打开程序的过程中,软件会出现打开数据库是一个只读数据库,我们需要将客户端设置为以管理员身份运行才能解决这种问题.这样虽然可以解决问题但是却给用户和与用与沟通的人员带来了不便,使软件的简易性与易操作性大打折扣. 那么我们能否在开发的过程中使软件直接以管理员的身份进行运行呢,答案是肯定的.结合在网上查询的资料和我个人的理解下介绍一下. 第一步:打开VS2013右键点击项目->属性->安全性->勾选启用ClickOnce安全

Win7、Win8、Win10始终以管理员身份运行程序。

Win7.Win8.Win10始终以管理员身份运行程序. 在Win7.Win8.Win10系统中,以管理员身份运行程序很麻烦,一般有以下几种方式: 1.在可执行程序或快捷方式上右键,以管理员身份运行: 2.在可执行程序或快捷方式上右键->属性->兼容性->勾选以管理员身份运行选项->确定: 3.修改安全策略,这也是一劳永逸的方式,使当前用户的所有操作以管理员身份进行,不进行询问. 本文中主要对第三种方式进行详细说明. 首先,进入用户帐户,操作顺序为:控制面板->用户帐户,如图

C# 以管理员身份运行程序

using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace MyWebBrowser { static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { //获得当前登录的Windows用户标示 Sy

C# 管理员身份运行程序

在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况下如果不是以管理员身份运行,则会提示命令无效. 或者通过winform程序执行Windows Service 服务时,也需要以管理员身份才能调用Service服务. 下面讲解一下如何使程序获取管理员权限来运行. 一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找

[Winform]默认以管理员身份运行程序

摘要 在使用setupfactory打包之后,想让程序默认以管理员身份运行,因为涉及到创建文件删除文件的操作,如果权限比较低的话,会出现没有权限操作的bug. 解决办法 在项目中找到app.manifest清单文件 修改requestedExecutionLevel 的属性level为requireAdministrator <?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifes

C#默认以管理员身份运行程序实现代码

using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace yyy { static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main(string[] Args) { /** * 当前用户是管理员的时候,直

C#默认以管理员身份运行程序

由于WIN8的权限限制,很多程序安装后没有写入权限,导致程序无法正常运行,以下是让程序以管理员身份运行,解决此问题 static void Main(string[] Args) { /** * 当前用户是管理员的时候,直接启动应用程序 * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行 */ //获得当前登录的Windows用户标示 System.Security.Principal.WindowsIdentity identity = System.Security.Pri

C#让程序以管理员身份运行程序

步骤:一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项 二:勾选“启用ClickOnce安全设置”, 三:这时,在项目下面会多出一个“app.manifest”的文件,选中它,并找到代码段<requestedExecutionLevel level="asInvoker" uiAccess="false" />,将其改为:<requestedExecutionLevel level="

AppleScript 以管理员身份运行程序

以下这条Apple Script可以用管理员身份去执行一个命令或程序, 权限是继承的. do shell script "chmod 777 /tmp" with administrator privileges 在Objective-C里也可以 NSDictionary *error = [NSDictionary new]; NSString *script = @"do shell script \"chmod 777 /tmp\" with adm