在另一篇文章中已经介绍了给Exe加上Uac的方法,在使用的过程中我们会发现,如果把带Uac的Exe写入注册表的Run中,是无法实现开机自动启动的,原因就是带Uac的exe需要申请管理员权限,以便运行执行程序,而在开机时无法申请到管理员权限,Exe将无法正常启动。那么如何使带Uac的Exe开机自动启动呢。
既然带Uac的Exe开机无法申请到管理员权限,那么可以新建一个不带Uac的小程序,在其中实现申请管理员权限启动exe不就可以解决问题了吗?实现方法如下:

unit DyjStartMainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShellAPI;
const
WM_STARTCLOSE = WM_USER + ;
type
TFrmDyjStart = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
protected
procedure WMStartClose(var Msg: TMessage); message WM_STARTCLOSE;
public
{ Public declarations }
end;
var
FrmDyjStart: TFrmDyjStart;
implementation
{$R *.dfm}
procedure TFrmDyjStart.FormCreate(Sender: TObject);
begin
PostMessage(Self.Handle, WM_STARTCLOSE, , );
end;
procedure TFrmDyjStart.WMStartClose(var Msg: TMessage);
var
_vPathExe : string;
begin
_vPathExe := ExtractFilePath(Application.ExeName) + 'Dyj2.exe';
ShellExecute(, 'runas', PChar(_vPathExe), nil, nil, SW_SHOWNORMAL);
Application.Terminate;
end;
end.

参考:http://blog.chinaunix.net/uid-20718335-id-364397.html

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

还可以使用services的方式来实现:
把程序的功能分成两部分,界面和不需要管理员权限的功能部分写成一个程序,实现自启动;需要管理员权限的部分写成一个服务,安装后随系统自启动。两者用进程外COM的方式进行讯。

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

在网上找资料,发现有几种方法:

通过系统API ShellExecuteExW函数提权,向其参数lpVerb传入一个“runas”命令(注:该命令是微软的一个隐藏参数),可以实现开机启动,并出现UAC提示框,但软件起来后,一些功能无法正常使用(实测:上面的例子就是弹出一个UAC对话框,需要点击后方可运行,运行后没发现有什么功能限制);
通过微软自己发布的第三方软件Application Compatibility Toolkit添加UAC白名单方式。同样可以实现开机启动,与1方法不同没有UAC提示框而直接启动,但问题如1一样,一些功能无法正常使用;
通过win7系统自己的“系统工具”中的“计划任务”来手动添加。此方法可以实现程序开机启动,没有提示框,程序所有功能都能正常实现。

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

对于Win7开机自启动,就是你们说的方法。我想提醒一点,恶意软件会破坏我们的“监控软件”,使其不能开机自启动。
解决方法是把我们的驱动设置为boot类型。boot类型的驱动是启动最早的驱动程序,在系统引导时就必须加载完毕。这样我们的驱动先取得控制权,随后HOOK一些关键函数(比如驱动加载、进程结束等函数),恶意软件无法破坏。一些杀掉软件也是这么做的,比如江民、瑞星、卡巴等。

参考:http://www.dewen.io/q/710/win7%E4%B8%8B%E8%87%AA%E5%90%AF%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%BD%95%E7%BB%95%E8%BF%87UAC%EF%BC%9F

win7中的Uac与开机自动启动(好几种办法,特别是用不带UAC的程序启动UAC程序是一个简单的好办法,写驱动自启动更是了不得)的更多相关文章

  1. ubuntu中编写shell脚本开机自动启动

    编写脚本是为了不用手动去开启各种服务(也是为了偷懒哈哈) 1.进入终端输入 创建一个后缀为.sh的脚本文件 touch test.sh 编辑脚本 vim test.sh test.sh编写脚本内容   ...

  2. centos下安装memcached并设置开机自动启动-两种方法

    方法一: 安装memcachedyum install memcached 启动服务并初始化service memcached start -p 11211 -l 127.0.0.1 -d 设置mem ...

  3. linux服务开机自动启动

    zookeeper设置开机自动启动 第一种:直接修改/etc/rc.d/rc.local文件 在/etc/rc.d/rc.local文件中需要输入两行,其中export JAVA_HOME=/usr/ ...

  4. 树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

  5. 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动

    以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest. 下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/ ...

  6. Java程序作linux服务并且开机自动启动[转]

    以有个java应用名称为test,打包为test.jar,程序入口为cn.com.ppnote.SocketServer. 下面在linux的/opt下建立testapp目录,复制test.jar到/ ...

  7. PB程序“无法启动此程序,因为计算机中丢失PBvm90.dll。尝试重新安装该程序以解决此问题”的解决方法

    因为有计算机自考科目,要求使用PB程序做一个管理系统.昨天刚安装好了PB程序,今天使用的时候,当我打开一个PB程序时,出现了"无法启动此程序,因为计算机中丢失PBvm90.dll.尝试重新安 ...

  8. Linux上设置开机启动Java程序

    在Linux上设置开机启动Java程序,例如:test.jar 在Linux上启动Java程序的命令: nohup java -jar test.jar >/dev/>& & ...

  9. C#中关于增强类功能的几种方式

    C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的 ...

随机推荐

  1. Vim程序编辑器

    Vim的三种模式: 1) 一般模式 以 vi 打开一个档案就直接进入一般模式了(这是默认的模式).在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内 ...

  2. windows向ubuntu过渡之常用编程软件安装

    不出意外的上篇文章又被踢出首页了,心情甚是悲桑..希望更多人能看到 1.安装codeblocks 直接在软件中心搜索codeblocks就可以 2.安装jdk并配置环境变量 http://www.li ...

  3. Sae配置Java数据库连接

    Sae配置Java数据库连接 Sae在Java中配置mysql数据库 >>>>>>>>>>>>>>>>& ...

  4. [C# 基础知识系列]专题一:深入解析委托——C#中为什么要引入委托

    转自http://www.cnblogs.com/zhili/archive/2012/10/22/Delegate.html 引言: 对于一些刚接触C# 不久的朋友可能会对C#中一些基本特性理解的不 ...

  5. C# DbHelperSQLite,SQLite数据库帮助类 (转载)

    主要功能如下数据访问抽象基础类 主要是访问SQLite数据库主要实现如下功能 .数据访问基础类(基于SQLite),主要是用来访问SQLite数据库的. .得到最大值:是否存在:是否存在(基于SQLi ...

  6. DOM操作--表格点击行变色

    点击表格行变色,这种网页效果应该还是比较常见的.大家应该看见了,我这里的效果是用DOM操作实现的,那么很多人会问什么是DOM操作,贴出代码之前我就和大家解释一下什么是DOM操作: DOM是Docume ...

  7. Windows环境下使用Cmake ndk编译fdk-aac

     一.废话 最近学习,第一步就是编译.我们需要编译FFmpag,x264,fdk_aac,下面是x264,网上说的很多都是几百年前的,我亲测完美可用 还是那句话 我能力有限,但是我希望我写的东西能够让 ...

  8. .NET多线程同步方法详解

    .NET多线程同步方法详解(一):自由锁(InterLocked) .NET多线程同步方法详解(二):互斥锁(lock) NET多线程同步方法详解(三):读写锁(ReadWriteLock) .NET ...

  9. 新的博客已经启用,欢迎大家访问(402v.com)

    非常抱歉这个博客已经暂停更新,新的博客已经启用,欢迎大家访问(402v.com)!谢谢支持!

  10. 关于Html无宽度居中

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...