C#判断程序是否以管理员运行

    /// <summary>
         /// 判断程序是否是以管理员身份运行。
         /// </summary>
         public static bool IsRunAsAdmin()
         {
             WindowsIdentity id = WindowsIdentity.GetCurrent();
             WindowsPrincipal principal = new WindowsPrincipal(id);
             return principal.IsInRole(WindowsBuiltInRole.Administrator);
         }

   //不是以管理员身份开启,则自动以管理员身份重新打开程序
   //写在构造里比较省资源
   public LoginFrm()
         {
             try
             {
                 //判断是否以管理员身份运行,不是则提示
                 if (!PublicUtil.IsRunAsAdmin())
                 {
                     ProcessStartInfo psi = new ProcessStartInfo();
                     psi.WorkingDirectory = Environment.CurrentDirectory;
                     psi.FileName = Application.ExecutablePath;
                     psi.UseShellExecute = true;
                     psi.Verb = "runas";
                     Process p = new Process();
                     p.StartInfo = psi;
                     p.Start();
                     Process.GetCurrentProcess().Kill();
                 }
             }
             catch (Exception ex)
             {
                 ExceptionScheduler.ExceptionScheduler exceptionScheduler = new ExceptionScheduler.ExceptionScheduler(ex);
                 ShowMessageOnUI.ShowErrorMessage("程序无法获取Windows管理员身份运行,\n请手动使用Windows管理员身份运行");
             }
             InitializeComponent();
         }

原文地址:https://www.cnblogs.com/hrkblogs/p/9133154.html

时间: 2024-08-26 15:35:49

C#判断程序是否以管理员运行的相关文章

C#:判断当前程序是否通过管理员运行

原文:C#:判断当前程序是否通过管理员运行 public bool IsAdministrator() { WindowsIdentity current = WindowsIdentity.GetCurrent(); WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current); return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator); } 转载声

C# WinForm 判断程序是否已经在运行,且只允许运行一个实例

static class Program {   /// <summary>   /// 应用程序的主入口点.   /// </summary>   [STAThread]   static void Main()   {     Application.EnableVisualStyles();     Application.SetCompatibleTextRenderingDefault(false);     //1.这里判定是否已经有实例在运行     //只运行一个实

判断程序是否运行在管理员权限下

1.提出两个概念(成立条件是系统是Vista后续版本,这是因为引入了UAC) 一个是运行程序的账号是管理员账号 另一个是当前运行环境是管理员环境 2.判断程序是否运行在管理员权限,直接使用函数IsUserAnAdmin就可以判断 #include <ShlObj.h> #include <tchar.h> int _tmain() { BOOL bIsAdmin = IsUserAnAdmin(); if(bIsAdmin) _tprintf_s(_T("Run As a

c#通过app.manifest使程序 右键 以管理员身份运行

c#通过app.manifest使程序以管理员身份运行 时间:2013-06-27 22:47来源:网络收集+本站整理 作者:jtydl 点击: 1175 次 微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(点击这儿了解什么是UAC).当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去. 通常我们使用c 微软在Windows Vista开始引入了UAC(用户帐户控制)新技

判断程序是否在VMWare内运行

现在有许多用户都喜欢用虚拟机来测试他们的软件,以避免对真实机器环境造成损害.但是在虚拟机中,有些功能是受限,甚至不可能完成的,因此,需要在程序中判断虚拟机的环境,如果程序在虚拟机内运行,则就要把虚拟机下不能使用的功能屏蔽掉. 判断程序是否在VMWare虚拟机内,可以用以下代码来完成: function IsRunInVMWare(out ErrMsg: string): Boolean;beginResult := False;try    asm      push     edx     

Qt开发程序在Windows 10应用需要管理员运行的解决思路

Qt开发程序在Windows 10应用需要管理员运行的解决思路 过了很长的时间没有发布博客了,但是我依然努力地开发Qt程序.目前呢,我发现开发Qt程序在Windows 10上有一个怪现象--有些程序右下角加上了盾牌的标志.那这个为什么呢? 原来是因为我的程序名称包含了Patch,结果就包含了加上了盾牌的标志.如果我去掉了Patch标志,盾牌就消失了.原来Windows对于文件名的一些敏感字,会选择性地做出一些防御操作.看来Windows 10在给我们安全的同时还给我们带来了"意想不到"

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

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

C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)

#region//开机自动运行        private void CB_Auto_CheckedChanged(object sender, EventArgs e)        {//CB_Auto是一个Checkbox,IsAutoRun 是个布尔变量,用于控制是否开机运行            if (CB_Auto.Checked == true) IsAutoRun = true;            else IsAutoRun = false;            tr

runas/cpau/lsrunase使用小结(以管理员运行指定程序)

企业环境中,为了安全起见一般都没有赋予域用户或者企业的PC客户端用户管理员权限. 但偶尔会有个别的程序一定需要管理员身份才能执行,如财务某些程序或专业的应用程序.那么如何不赋予用户管理员权限及密码但又可以让用户有权限执行指定的程序呢? 下面就介绍几种主流的办法: 1,runas命令(微软原生命令): 用法:runas /user:user_name abc.exeuser_name是要使用哪个用户运行该程序就写上哪个用户名,abc.exe是程序名,如果abc.exe不在system32目录下的话