WIN8,开机启动 需要管理员权限的程序
1. 用WPF开发,需要管理员权限并开机启动,以写注册表的方式实现。仅写注册表只能启动一般权限的程序。
2. 考虑这样实现: 程序以一般权限启动,启动以后申请管理员权限。
实现:
App类中重写OnStartup事件,判断当前程序的权限,如果不是管理员权限,则申请权限,重启进程并关闭当前进程:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
if (!principal.IsInRole(WindowsBuiltInRole.Administrator))
{
if (IsRunningOne(fileName))
{
MessageBox.Show("already exit");
Application.Current.Shutdown();
Environment.Exit(0);
}
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = Assembly.GetExecutingAssembly().Location;
startInfo.Verb = "runas"; Process.Start(startInfo);
Current.Shutdown();
Environment.Exit(0);
}
如果已经有实例运行,则不启动。
3. 开机启动的程序,获取当前exe所在路径的值为“C:\Windows\System32”
App类:,其中不允许运行两个实例。
public partial class App : Application
{
string fileName = "SystemManager"; private bool IsRunning(string fileName)
{
return Process.GetProcessesByName(fileName).Length > ;
} private bool IsRunningOne(string fileName)
{
return Process.GetProcessesByName(fileName).Length > ;
} protected override void OnStartup(StartupEventArgs e)
{
if (Debugger.IsAttached)
{
base.OnStartup(e);
return;
}
if (!IsRunning(fileName))
{ WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
if (!principal.IsInRole(WindowsBuiltInRole.Administrator))
{
if (IsRunningOne(fileName))
{
MessageBox.Show("already exit");
Application.Current.Shutdown();
Environment.Exit();
}
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = Assembly.GetExecutingAssembly().Location;
startInfo.Verb = "runas"; Process.Start(startInfo);
Current.Shutdown();
Environment.Exit();
}
}
else
{
MessageBox.Show("实例运行超过2个");
}
//base.OnStartup(e);
} }
WIN8,开机启动 需要管理员权限的程序的更多相关文章
- windows Service启动带有管理员权限的GUI进程
事情是这样的,公司的产品有个守护进程(windows Service)需要启动产品的主程序exe,让主程序它运行为管理员权限(因为主程序会加载一个插件,插件中有列出端口监听的功能,需要由端口查找到进程 ...
- C#启用管理员权限运行程序
方法一:关闭程序重新请求打开 static class Program { [STAThread] static void Main() { Application.EnableVisualStyle ...
- C# 使用管理员权限运行程序
最近在开发OPCServer组件过程中,在注册opcServer是总是返回false,后来查找原因得知在本地主机注册opcServer时,需要使用管理员权限. OPCServer在一台机器上部署时只需 ...
- C# 程序软件启动默认管理员权限。
在vs的Properties目录中找到 app.manifest,将其中level="asInvoker" 改成 level="requireAdministrator& ...
- C# 默认以管理员权限运行程序
/** * 当前用户是管理员的时候,直接启动应用程序 * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行 */ //获得当前登录的Windows用户标示 //URL:http://w ...
- delphi调试需要管理员权限程序报错“Unable to create process:请求的操作需要提升”
delphi调试启动需要UAC权限的程序的时候会报错“Unable to create process:请求的操作需要提升”.这是因为delphi没有以管理员身份启动,这样delphi createp ...
- [Windows]VS2010如何以管理员权限启动?(转)
在某些项目进行开发的时候,需要提升应用程序本身的权限,这个是很容易的.但是如何让VS2010启动的时候就已管理员权限运行程序呢?为这个问题苦恼了好久,终于找到了办法. 找到VS2010的快捷方式:右击 ...
- vs开发 winform 设置winform 获取管理员权限启动
因为需要设置为开机项 没有管理员权限对注册表访问失败 C# 以管理员身份运行WinForm程序 转载https://www.bbsmax.com/A/obzbkKrQJE/ 鱼洛 2016-07-29 ...
- .Net程序随系统开机启动(仿Foxmail托盘效果控制)
对于使.NET程序随系统开机启动,最常用的可能就是向在注册表中注册开机启动项,或是建立Windows服务,使程序随系统启动而启动.这里以WinForm程序为例,测试Demo分享,同时附上对于程序托盘的 ...
随机推荐
- Cycles渲染研究测试效果图
从左到右:.贴图镂空透明 2.纹理半透明 3.纹理 4.材质半透明 5.材质 输入输出节点信息如下: ############################################# ...
- InnoDB VS MyISAM
首先都是MySql存储引擎.数据库的考虑点一般就是事务(ACID),然后牵扯出的锁机制.如果你需要事务,那就只能选InnoDB了.如果你还需要外键约束,你也只能选择InnoDB.这个是两者最大的区别. ...
- 注解:【有连接表的】Hibernate双向1->N关联(仅N端控制关联关系)
Person与Address关联:双向1->N,[有连接表的],N端控制关联关系 Person.java package org.crazyit.app.domain; import java. ...
- 单色半透明-兼容IE7
background: #000; width: 100%;height: 100%; filter: alpha(opacity=30); opacity: 0.3;
- Ajax技术原理小结
ajax:Asynchronous Javascript and XML 异步Javascript 和XML. 是一种创建交互式网页应用的网页开发技术. 1.0 优势: ...
- TDatabase TQuery TDataSource TDBGrid 设定方法
TDatabase TQuery TDataSource TDBGrid object Database1: TDatabase AliasName = 'sfis' DatabaseName = ' ...
- Java 实现文件上传、下载、打包、文件copy、文件夹copy。
文件and文件夹copy package org.test; import java.io.*; public class FileCopy { /** * 复制单个文件 * * @param old ...
- CS: Marshalling and Unmarshalling, Serialization and Unserialization
Link1: https://en.wikipedia.org/wiki/Marshalling_(computer_science) Quote: " Comparison with se ...
- Some Link: Java Reflection
http://docs.oracle.com/javase/tutorial/reflect/index.html https://bugs.openjdk.java.net/browse/JDK-4 ...
- Compass的误解与新发现
最后个人感觉 Compass是 css世界的.NET 很久以前看到 Compass 误以为是css编译器,因为总是在看到如何安装Scss的文章里面看到的 知道最近不小心进入 Compass官网溜达,才 ...