多系统兼容(支持Vista和Win7)

前言:Vista和Win7下为提高系统安全性,引入UAC。

UAC给程序运行带来很大不便,如普通管理员权限运行的程序不能操作注册表,操控服务,读写文件等。有管理员运行权限的进程运行时会弹框提示等,且有管理员权限的程序若为设置自动启动,电脑重启后将被阻止。

解决:给程序配置管理员权限,绕过UAC控制

 

一:给程序添加管理员运行权限

      1、添加新建项(应用程序清单文件),配置为管理员权限进程(本来是要搞图片的,可不能粘贴)。

      2、程序启动时判断当前操作系统,若是Vista及其上,则以超级管理员身份运行,软件开机启动后弹出确认窗口,但不会被阻止。

 

 

---------------------------------------------------------------------------------------------------------------------------------------------------

判断当前操作系统:

 /// <summary>
 /// 判断当前运行程序是在Vista或更高版本运行
 /// </summary>
 /// <returns></returns>
static internal bool IsVistaOrHigher()
{
          return Environment.OSVersion.Version.Major > 5;
 }

-------------------------------------------------------------------------------------------------------------------------------------------------

判断是否是以管理员身份登录:

 /// <summary>
/// 判断当前是否是管理员登录
/// </summary>
/// <returns>If is elevated</returns>
static internal bool IsAdmin()
{
    bool BResult = false;
     WindowsIdentity WinID = WindowsIdentity.GetCurrent();
     WindowsPrincipal WinP = new WindowsPrincipal(WinID);
     if (WinP.IsInRole(WindowsBuiltInRole.Administrator))
     {
          BResult = true;
      }
      return BResult;
    

-------------------------------------------------------------------------------------------------------------------------------------------------

以管理员身份运行某些程序:

/// <summary>
///重启程序以超级管理员登录
/// </summary>
internal static void RestartElevated()
{
          ProcessStartInfo startInfo = new ProcessStartInfo();
          startInfo.UseShellExecute = true;
          startInfo.WorkingDirectory = Environment.CurrentDirectory;
          startInfo.FileName = Application.ExecutablePath;
          startInfo.Verb = "runas";

          try
          {
              Process.Start(startInfo);
          }
          catch//取消程序运行
          {
          }
          Application.ExitThread();
          Application.Exit();
}

 

 

备注:Vista和Win7下以服务启动的EXE不受限即运行时不用弹出提示框,可以操作注册表,服务,读写文件等

 

 

 

 

 

 

 

 

 

 

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------

VS制作的安装包不用特殊配置:

因为安装包运行时UAC会自动判断并弹出提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值