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分享,同时附上对于程序托盘的 ...
随机推荐
- javascript设计模式与开发实践
1. js面向对象6种形式(详情) <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- 【转】一台电脑同时运行多个tomcat配置方法
参考:http://blog.csdn.net/zyk906705975/article/details/8471475
- JS截字符串处理数字,汉字,英文问题
<script> function suolve( str,sub_length ){ var temp1 = str.replace(/[^\x00-\xff]/g,"**&q ...
- 198个经典C#WinForm实例源码(超赞) 里面的例子 .sln 目录
\-窗体技巧\QQ窗体\QQFrm.sln; \-窗体技巧\仿XP系统的任务栏菜单\仿XP系统的任务栏菜单.sln; \-窗体技巧\向窗体中拖放图片并显示\向窗体中拖放图片并显示.sln; \-窗体技 ...
- Bulk_Collect_Performance 比较
上一篇讲到了调用集锦,这篇关注一下性能问题吧. DECLARE CURSOR c_tool_list IS SELECT descr d1 FROM hardware; l_descr hardwar ...
- Redis的PHP操作手册(转)
String 类型操作 string是redis最基本的类型,而且string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 $redis-> ...
- ZeroMQ接口函数之 :zmq_ctx_get - 得到环境上下文的属性
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_ctx_get zmq_ctx_get(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_c ...
- GO语言练习:反射
列举几个反射的例子:1)简单类型反射,2)复杂类型反射,3)对反射回来的数据的可修改属性 1.简单类型反射 1.1)代码 package main import ( "fmt" & ...
- python 之sqlalchemy many to many
# -*- coding: utf-8 -*- """ @author: zengchunyun """ from sqlalchemy i ...
- php+ajax 登录注册页面
主要是登录注册功能,前端后台验证没有什么,这个大家可以自己加上去,比如过滤啊,正则啊等 还是先放图吧 这是登录及注册界面 点击注册切换到注册界面,点击登录切换到登录界面 <!DOCTYPE h ...