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


    在另一篇文章中已经介绍了给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.

    参考: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

  • 相关阅读:
    poj 2362 Square
    poj 1011 Sticks
    hust 1062 Divisibility
    hdu 4115 Eliminate the Conflict
    Android
    android stdio 快捷键
    Android Lint的使用
    Android studio导出配置
    fragment显示 Binary XML file line #12: Error inflating class fragment 错误
    markdown 字体颜色
  • 原文地址:https://www.cnblogs.com/findumars/p/4718995.html
Copyright © 2020-2023  润新知