我想让程序在计算机启动时自动运行,应该写注册表,是用InstallShield还是在程序中写???

时间:2021-06-30 15:36:09
如果用InstallShield来写注册表,该如何写????
因为程序安装路径是变化的,因此写入的值应该是变化的,该如何写???

9 个解决方案

#1


我只知道写到注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中,新建一个“字串值”,没用过installshield

#2


InstallShield中第三个好象就是写注册表,至于安装路径的问题,我记得安装路径可以用一个<program file>之类的写法代替真的路径,系统路径<system>。我手边没有IS,所以说的不太清楚,不过你自己试试就可以了。

#3


谢谢楼上两位的关注。。

#4


注册表:
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run-
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run-
 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

win.ini文件
  [windows]
     run=
     load=

system.ini文件
 [boot]
   shell = explorer.exe  *.exe

autoexec.bat文件
  path\file.exe

winstart.bat 文件
  path\file.exe

windows启动组:
   拉个快捷方式就可以了

至于文件关联,dll文件插入等方法一般的软件就不需要了

在程序里写,就大概有上面的那些方式了
用is的话,二楼的兄弟说的差不多了
  

#5


我是这样在程序中解决的:

无论程序安装在任何目录下,它的路径都可自动用函数获得
Application->ExeName
然后将其加入注册表中,或者win.ini中,
或者用程序创建一个快捷方式保存在“启动”目录里。

当然如果写入win.ini的话,最好用函数ExtractShortPathName
转换文件名。

#6


我不希望在程序中解决,
因为这样每次程序运行时都要对注册表或.ini,文件进行操作。
我还是希望在IS中解决,在软件安装时进行注册。

#7


is本来就支持写windows启动组和注册表

#8


我想是在IS中写要科学一点,下面是我写的IS脚本中的一部分:

string szPath3;

if(FindFile(TARGETDIR,"8017Svr.exe",szResult)=0) then
  szPath3=TARGETDIR^"8017Svr.exe";
  LongPathToQuote(szPath3,TRUE);
  RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" , "8017Svr" , REGDB_STRING , szPath3 , -1 );
endif;

#9


问题已经解决了,
我的做法同楼上的兄弟一样。
散分

#1


我只知道写到注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中,新建一个“字串值”,没用过installshield

#2


InstallShield中第三个好象就是写注册表,至于安装路径的问题,我记得安装路径可以用一个<program file>之类的写法代替真的路径,系统路径<system>。我手边没有IS,所以说的不太清楚,不过你自己试试就可以了。

#3


谢谢楼上两位的关注。。

#4


注册表:
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run-
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run-
 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

win.ini文件
  [windows]
     run=
     load=

system.ini文件
 [boot]
   shell = explorer.exe  *.exe

autoexec.bat文件
  path\file.exe

winstart.bat 文件
  path\file.exe

windows启动组:
   拉个快捷方式就可以了

至于文件关联,dll文件插入等方法一般的软件就不需要了

在程序里写,就大概有上面的那些方式了
用is的话,二楼的兄弟说的差不多了
  

#5


我是这样在程序中解决的:

无论程序安装在任何目录下,它的路径都可自动用函数获得
Application->ExeName
然后将其加入注册表中,或者win.ini中,
或者用程序创建一个快捷方式保存在“启动”目录里。

当然如果写入win.ini的话,最好用函数ExtractShortPathName
转换文件名。

#6


我不希望在程序中解决,
因为这样每次程序运行时都要对注册表或.ini,文件进行操作。
我还是希望在IS中解决,在软件安装时进行注册。

#7


is本来就支持写windows启动组和注册表

#8


我想是在IS中写要科学一点,下面是我写的IS脚本中的一部分:

string szPath3;

if(FindFile(TARGETDIR,"8017Svr.exe",szResult)=0) then
  szPath3=TARGETDIR^"8017Svr.exe";
  LongPathToQuote(szPath3,TRUE);
  RegDBSetKeyValueEx ( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run" , "8017Svr" , REGDB_STRING , szPath3 , -1 );
endif;

#9


问题已经解决了,
我的做法同楼上的兄弟一样。
散分