C#默认以管理员身份运行程序实现代码
上篇博客写了一下如何通过网络时间更新系统时间,当时写的时候怎么测试都不成功,后来想想是不是我操作系统(当时是在win8上开发的)的问题。当时我猜应该是权限不够,导致无法修改系统时间,于是我以管理员身份运行了一次,结果测试成功!原来真的是权限的问题,于是就在程序里面加入了默认以管理员身份运行的代码。下面让我们看看是怎么实现的吧!
static void Main(string[] Args)
{
/**
* 当前用户是管理员的时候,直接启动应用程序
* 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
*/
//获得当前登录的Windows用户标示
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
//创建Windows用户主题
Application.EnableVisualStyles();
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
//判断当前登录用户是否为管理员
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
//如果是管理员,则直接运行
Application.EnableVisualStyles();
Application.Run(new Form1());
}
else
{
//创建启动对象
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
//设置运行文件
startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
//设置启动参数
startInfo.Arguments = String.Join(" ", Args);
//设置启动动作,确保以管理员身份运行
startInfo.Verb = "runas";
//如果不是管理员,则启动UAC
System.Diagnostics.Process.Start(startInfo);
//退出
System.Windows.Forms.Application.Exit();
}
}
打开程序集里的Program.cs文件,并将其中Main方法中的代码替换为以上代码即可实现程序默认以管理员身份运行。
这篇博客本来早就应该发表的,可是由于网络等各种原因,一直到了现在才得以发表,网络问题很快就会得到解决,到时会继续恢复到每周一篇的更新频率,希望大家继续关注。
相关推荐
-
C#测量程序运行时间及cpu使用时间实例方法
这里要指出的是, 运行一段程序,使用的cpu时间,跟实际运行的时间是不一样的.附例如下: 复制代码 代码如下: private void ShowRunTime() { TimeSpan ts1 = Process.GetCurrentProcess().TotalProcessorTime; Stopwatch stw = new Stopwatch(); stw.Start(); int Circles = 1000; for (int i = 0; i < Circles
-
解决C#程序只允许运行一个实例的几种方法详解
本文和大家讲一下如何使用C#来创建系统中只能有该程序的一个实例运行.要实现程序的互斥,通常有下面几种方式,下面用 C# 语言来实现:方法一:使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例.把program.cs文件里的Main()函数改为如下代码: 复制代码 代码如下: using System;using System.Windows.Forms;using System.Runtime.InteropServices;namespace NetTools{ static cl
-
C#实现软件监控外部程序运行状态的方法
本文实例讲述了C#实现软件监控外部程序运行状态的方法.分享给大家供大家参考.具体方法如下: 需要外挂一个程序,用于监控另一个程序运行状态,一旦检测到另一程序关闭,就触发一个事件做其他处理. 引用的类 复制代码 代码如下: using System.Diagnostics;//引入Process 类 声明 复制代码 代码如下: private Process[] MyProcesses; 主要处理部分,该段代码可放在定时器中循环检测监控的程序是否启动 复制代码 代码如下: MyProcesses
-
C#判断程序是否是管理员权限运行的方法代码示例
public bool IsAdministrator() { WindowsIdentity current = WindowsIdentity.GetCurrent(); WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current); return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator); }
-
c#通过app.manifest使程序以管理员身份运行
微软在Windows Vista开始引入了UAC(用户帐户控制)新技术(点击这儿了解什么是UAC).当程序执行时需要权限的话,UAC会弹出警告消息:让用户确认是否同意允许这个程序改变你的计算机配置,windows需要得到你的许可才可以让程序继续执行下去. 通常我们使用c#编写的程序不会弹出这个提示,也就无法以管理员身分运行.微软的操作系统使用微软的产品方法当然是有的,通过app.manifest配置可以使程序打开的时候,弹出UAC提示需要得到允许才可以继续,这样就获得了管理员的权限来执行程序.
-
C#如何防止程序多次运行的技巧
一.引言 最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9, 所以这里就记录下来,希望给遇到同样问题的朋友有所参考的,同时也是对自己的一个积累.在介绍具体实现代码之前,我们必须明确解决这个问题的思路是什么的?下面只要分享我的一个思考的这个问题的方式: 1.当我们点击一个exe文件时,此时该exe程序将会运行,我们可以看
-
c#定时运行程序分享(定时程序)
1)在我们的项目中添加引用文件:TaskSchedulerEngine.dll(dll定义了一个ITask接口,定义了两个方法Initialize和HandleConditionsMetEvent): 2)创建一个定时触发的类:SyncTask.cs(类名自己随便定义),该类必须实现接口 ITask.具体代码如下: 复制代码 代码如下: public class SyncTask : ITask{ //接受传递过来的参数的变量 private string configName; ///
-
C#判断某程序是否运行的方法
本文实例讲述了C#判断某程序是否运行的方法,分享给大家供大家参考. 具体实现方法如下: [DllImport("user32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImp
-
C#默认以管理员身份运行程序实现代码
上篇博客写了一下如何通过网络时间更新系统时间,当时写的时候怎么测试都不成功,后来想想是不是我操作系统(当时是在win8上开发的)的问题.当时我猜应该是权限不够,导致无法修改系统时间,于是我以管理员身份运行了一次,结果测试成功!原来真的是权限的问题,于是就在程序里面加入了默认以管理员身份运行的代码.下面让我们看看是怎么实现的吧! 程序默认以管理员身份运行 复制代码 代码如下: static void Main(string[] Args) { /** * 当前用户是管理员的时候,直接启动应用程序
-
admin.vbs 以管理员身份运行程序的vbs命令
复制代码 代码如下: '以管理员身份运行程序的命令admin.vbs Set objWMIServices = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set objWbemObjectSet = objWMIServices.ExecQuery(_ "SELECT * FROM Win32_Process WHERE " &_ "Executabl
-
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
-
易语言程序默认以管理员身份运行方法
由于Win7及以上版本系统的UAC账户控制权限,导致易语言写的很多程序在没有以管理员权限运行的的情况下,无法正常进行一些需要管理员权限的操作,如修改注册表等,那么我们如何在用户启动程序的时候就向系统申请管理员权限,以保证程序能正常使用呢? 1.打开Restorator 2009,通过文件菜单打开要修改的程序test.exe.此时的test.exe没有管理员权限,如图,程序图标上并没有那个标志了管理员权限运行的 小盾牌 图标. 2.在桌面建立名为1.txt的文本文件,并将下面的内容写入后保存.此文
-
自动以管理员身份运行批处理bat文件(vbs与bat两种方法)
但是,批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名为"XXXXXX(请右键点击,用管理员身份运行!).bat",但总有些用户会忽略这条提示,直接运行,此时由于权限不足,导致脚本运行失败. 我们可以使用一种变通的方法,让bat启动时,首先调用vbs脚本,通过vbs脚本,以管理员身份调用该bat的 runas 部分 我们的脚本可以写在runas 下,这样就点击该bat脚本,就可以已管理员身份运行了 示例代码如下 @ECHO OFF setlocal EnableDelay
-
如何判断 .NET Core 应用程序以管理员身份运行的
目录 1.euid 2.setuid 3.Demo 有时候,我们需要知道当前程序是否以管理员身份运行,以便执行一些需要特殊权限的操作. 在github上找到了一个解决方案: //需要引用nuget包Mono.Posix.NETStandard public static bool IsAdministrator => RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? new WindowsPrincipal(Win
-
让bat批处理以管理员权限运行的实现方法
1.第一种方法 有的电脑是非管理员登录,运行程序时,需要提示是否运行运行.解决方法如下: @ echo off %1 %2 ver|find "5.">nul&&goto :Admin mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas&quo
-
Red Hat Linux中自动运行程序
1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序.例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window. 2.登录时自动运行程
随机推荐
- 用批处理实现将文件以数字重命名的代码
- Java concurrency之非公平锁_动力节点Java学院整理
- 不错的用外部Javascript修正特定网页内容
- js实现网页标题栏闪烁提示效果实例分析
- php版微信公众平台接口开发之智能回复开发教程
- 深入理解C#中foreach遍历的使用方法
- 利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
- MySQL配置文件my.cnf优化详解(mysql5.5)
- Apache2.2以上版本与Tomcat整合配置及负载均衡实现
- 服务器安全设置_系统端口安全配置
- IIS和tomcat5多站点配置流程
- Java设计模式之责任链模式简介
- VS2010写的程序在自己电脑可以运行、其他电脑上不能运行的解决方案
- php的4种常见运行方式
- PHP SOCKET 技术研究
- 有关于IE8 Beta 1两个提醒
- 解析IP地址与MAC地址
- nodejs爬虫初试superagent和cheerio
- Python动态参数/命名空间/函数嵌套/global和nonlocal
- Scala实现冒泡排序、归并排序和快速排序的示例代码