dotnet 判断程序当前使用管理员运行降低权使用普通权限运行
有一些程序是不想通过管理员权限运行的,因为在很多文件的读写,如果用了管理员权限程序写入的程序,其他普通权限的程序是无法直接访问的。本文告诉大家如何判断当前的程序是通过管理员权限运行,然后通过资源管理器使用普通权限运行
通过下面代码可以判断当前的程序是管理员权限运行
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
{
// 当前正在以管理员权限运行。
}
如果是 dotnet core 程序,需要安装 Microsoft.Windows.Compatibility 才可以使用上面代码
通过 Explorer 运行自己,在 dotnet framework 程序和 dotnet core 程序在获得自己的 exe 文件的方法是不同的
在 dotnet framework 程序可以直接在 Main 函数通过 Assembly.GetEntryAssembly().Location 拿到 exe 文件的路径
Process.Start("explorer.exe", Assembly.GetEntryAssembly().Location);
但是如果在 dotnet core 程序,通过 Assembly.GetEntryAssembly().Location 会拿到 xx.dll 而不是 exe 的路径,需要使用下面的代码拿到 exe 的文件
// 方法1
var file = new FileInfo(Assembly.GetExecutingAssembly().Location);
var exe = Path.Combine(file.DirectoryName, file.Name.Replace(file.Extension, "")+".exe");
// 方法2
var exe = Process.GetCurrentProcess().MainModule.FileName;
// 更多方法
然后自己关闭
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
{
var file = new FileInfo(Assembly.GetExecutingAssembly().Location);
var exe = Path.Combine(file.DirectoryName, file.Name.Replace(file.Extension, "") + ".exe");
// 检测到当前进程是以管理员权限运行的,于是降权启动自己之后,把自己关掉。
Process.Start("explorer.exe", Assembly.GetEntryAssembly().Location);
Environment.Exit(0);
}
在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限) - walterlv
我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新
如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
dotnet 判断程序当前使用管理员运行降低权使用普通权限运行的更多相关文章
- 2019-8-31-dotnet-判断程序当前使用管理员运行降低权使用普通权限运行
title author date CreateTime categories dotnet 判断程序当前使用管理员运行降低权使用普通权限运行 lindexi 2019-08-31 16:55:58 ...
- C#判断程序是否以管理员身份运行,否则以管理员身份重新打开
/// <summary> /// 判断程序是否是以管理员身份运行. /// </summary> public static bool IsRunAsAdmin() { Wi ...
- C# 之 判断或设置以管理员身份运行程序
一.判断程序是否以管理员权限运行 using System.Security.Principal; public bool IsAdministrator() { WindowsIdentity cu ...
- C#程序 -- 以管理员权限运行
阅读目录 一.判断程序是否以管理员身份运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户 ...
- 管理员权限运行-C#程序
C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也 ...
- C#:判断当前程序是否通过管理员运行
原文:C#:判断当前程序是否通过管理员运行 public bool IsAdministrator() { WindowsIdentity current = WindowsIdentity.GetC ...
- C#启用管理员权限运行程序
方法一:关闭程序重新请求打开 static class Program { [STAThread] static void Main() { Application.EnableVisualStyle ...
- C#程序以管理员权限运行
原文:C#程序以管理员权限运行 C#程序以管理员权限运行 在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员 ...
- C#程序以管理员权限运行【我采用了第二种,比较好用】
在Vista 和 Windows 7 及更新版本的操作系统,增加了 UAC(用户账户控制) 的安全机制,如果 UAC 被打开,用户即使以管理员权限登录,其应用程序默认情况下也无法对系统目录.系统注册表 ...
随机推荐
- virtualenv安装 以及在PyCharm中的使用
1.安装前条件 python3.7和 pip(可以使用这个命令升级python -m pip install --upgrade pip) 2.安装virtualenv pip install vir ...
- 草地排水 改了又改(DCOJ6013)
题目描述 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫约翰修建了一套排水系统来使贝茜的草地免除被大水淹没 ...
- PLAY2.6-SCALA(十) 模板引擎Twirl
一.语法 1.@ 它是一个特殊的字符,表示动态声明的开始.对于简单的动态声明结尾可以从代码块中自动推断结尾,对于复杂的表达式通常加上() Hello @(customer.firstName + cu ...
- 数据分析1:安装tushare安装包
1. 2. 3.重点内容
- springboot项目启动,但是访问报404错误
启动类Application上加了@ComponentScan(basePackages = {})这个注解导致controller扫描不到导致的,如果加了这个注解,springboot就不会扫描Ap ...
- a configuration error occured during startup.please verify the preference field with the prompt:
Window->Preferences->MyEclipse Enterprice Workbench->Servers->Tomcat->选择你的Tomcat(比如To ...
- BZOJ 1008 越狱题解
其实这题很水,显然n个房间有m种宗教,总共有n^m种情况, 我们再考虑不合法的情况,显然第一个房间有m种情况,而后一种只有m-1种情况(因为不能相同) 所以不合法的情况有(m-1)^(n-1)*m种情 ...
- 火狐自动填写表单autofill forms的用法和注意事项
1.安装后,打开要表单页面,右键
- 【Leetcode链表】环形链表 II(142)
题目 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos ...
- 通过反射拿到构造方法 Day25
package com.sxt.constructor; /* * 反射 * Class类拿到构造方法 */ import java.lang.reflect.Constructor; public ...