DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 3
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2022/5/23 10:46:33
标题:
WIN11下自启动代码的疑问 浏览:971
加入我的收藏
楼主: 再XP时代没问题,但从win10/11开始,好像原来的自启动程序代码不太容易实现。会被屏蔽掉。大家有什么更好的办法码

procedure TForm1.SetAutoRun(ok: boolean);
var
   Reg:TRegistry;       //首先定义一个TRegistry类型的变量Reg
begin
   Reg:=TRegistry.Create;
   try          //创建一个新键
     Reg.RootKey:=HKEY_LOCAL_MACHINE;     //将根键设置为HKEY_LOCAL_MACHINE
     Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',true);//打开一个键
     if ok then begin
        Reg.WriteString('Ad',application.ExeName);         //在Reg这个键中写入数据名称和数据数值
          form2.checkbox1.Checked:=true;
     end
     else begin
        reg.DeleteValue('Ad');
         form2.checkbox1.Checked:=false;
     end;
     Reg.CloseKey;       //关闭键
   finally
     Reg.Free;
   end;
end;
----------------------------------------------
-
作者:
男 supermay (supermay) ★☆☆☆☆ -
盒子活跃会员
2022/5/23 11:29:22
1楼:  if OSIsWin64 then
  begin
    RegAccess := KEY_ALL_ACCESS or KEY_WOW64_32KEY;
  end
  else
  begin
    RegAccess := KEY_ALL_ACCESS;
  end;

  FFromService := AFromService;
  if (getRunningFlag(sRunKeyName)) then
  begin

    try
      pReg := TRegistry.Create(RegAccess);
      try
        pReg.RootKey := HKEY_LOCAL_MACHINE;
        pReg.OpenKey(C_RUN_REGKEY, True);

        
          if not pReg.ValueExists(sRunKeyName) then
          pReg.WriteString(sRunKeyName, regValue);
         
      finally
        pReg.Free;
      end;
    except
      on e: Exception do
        self.WriteLog(e.message, lfError);
    end;
  end;
----------------------------------------------
链接:https://pan.baidu.com/s/12jzmECYKhGCsHBxz8tmB6w 提取码:pelr --来自百度网盘超级会员V9的分享
作者:
男 lsuper (lsuper) ★☆☆☆☆ -
盒子活跃会员
2022/5/23 11:32:39
2楼: 开启 UAC 管理员执行权限
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/5/23 11:44:33
1楼: 你这个代码是写注册表。

在新版的 windows 里面,写注册表有权限问题。

当然你也可以写,但是需要主动弹一个【软件要修改系统设置】的窗口给用户,用户点确认才能继续执行。如何弹这个窗口我不记得了,网上很多资料。
----------------------------------------------
-
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2022/5/23 12:14:17
3楼: 我试了下,把RootKey:= HKEY_CURRENT_USER;就可以实现开机启动,但是怎么判断check1.checked 这个属性有点为难,用inifile码
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/5/23 16:14:02
4楼: 楼上,既然你可以写注册表 -- CurrentUser 的意思就是当前用户自己的,大概就不需要系统权限允许了。那么,你当然可以把 Check1.Checked 这个也写入注册表。

不过,既然是写的当前用户,当其它用户登录时,这个程序不会自动启动。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS