Chinaunix首页 | 论坛 | 博客
  • 博客访问: 967803
  • 博文数量: 108
  • 博客积分: 3243
  • 博客等级: 中校
  • 技术积分: 964
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-15 22:09
文章分类

全部博文(108)

文章存档

2020年(2)

2019年(1)

2018年(2)

2017年(9)

2016年(20)

2015年(1)

2013年(1)

2012年(12)

2011年(28)

2010年(27)

2009年(4)

2008年(1)

分类:

2010-11-01 17:33:41

在另一篇文章中已经介绍了给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 + 100;
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, 0, 0);
end;
procedure TFrmDyjStart.WMStartClose(var Msg: TMessage);
var
  _vPathExe : string;
begin
  _vPathExe := ExtractFilePath(Application.ExeName) + 'Dyj2.exe';
  ShellExecute(0, 'runas', PChar(_vPathExe), nil, nil, SW_SHOWNORMAL);
  Application.Terminate;
end;
end.
阅读(3766) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-02 17:18:25

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com