依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 16|回复: 0

NSIS常用代码整理

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
19672
发表于 昨天 17:12 | 显示全部楼层 |阅读模式
NSIS常用代码整理
  1. ;获取操作系统盘符
  2. ReadEnvStr $R0 SYSTEMDRIVE
  3. ;创建log文件夹
  4. CreateDirectory "$R0log"
  5. ;递归删除log文件夹
  6. RMDir /r "$R0log"
  7. ;弹出Windows关机框
  8. FindWindow $0 "shell_traywnd"
  9. SendMessage $0 273 506 0
  10. ;请求Windows帮助
  11. FindWindow $0 "shell_traywnd"
  12. SendMessage $0 273 503 0
  13. ;一句话刷新屏幕
  14. System::Call 'Shell32::SHChangeNotify(i 0x8000000, i 0, i 0, i 0)'
  15. ;打开桌面属性
  16. ;...cpl,0,3'中的3可以改为
  17. ;-1 主题 0 壁纸 1 屏保 2 外观 3 设置
  18. Exec 'Rundll32.exe shell32.dll,Control_RunDLL Desk.cpl,0,3'  ;打开"设置"
  19. ;获得安装程序所在目录
  20. System::Call 'kernel32::GetCurrentDirectory(i 1024,t .R1)'
  21. MessageBox MB_OK '安装程序所在目录:$R1'
  22. ;或者直接使用变量
  23. MessageBox MB_OK '文件名$EXEFILE,所在文件夹$EXEDIR,完整路径$EXEPATH。'
  24. ;获得当前安装程序进程PID
  25. System::Call 'kernel32::GetCurrentProcessId()i .R0'
  26. MessageBox MB_OK '安装程序进程PID:$R0'
  27. ;获得磁盘卷标
  28. StrCpy $R0 "C:"
  29. System::Call 'kernel32::GetVolumeInformationA(t R0,t .R1,i 100,i .R3,i .R4,i .R5,t .R6,i 100)'
  30. MessageBox MB_OK '盘符:$R0$n卷标:$R1$n文件格式:$R6'
  31. ;设置磁盘卷标
  32. StrCpy $R0 "C:" ;盘符
  33. StrCpy $R1 "系统" ;卷标
  34. System::Call 'kernel32::SetVolumeLabelA(t R0,t R1)'
  35. ;设置文件属性
  36. StrCpy $R0 "C:1.EXE" ;文件
  37. StrCpy $R1 0x20         ;属性
  38. System::Call 'kernel32::SetFileAttributesA(t R0,i 0x100)'
  39. ;属性表
  40. ;0x20   FILE_ATTRIBUTE_ARCHIVE,存档
  41. ;0x2 FILE_ATTRIBUTE_HIDDEN,隐藏
  42. ;0x80 FILE_ATTRIBUTE_NORMAL,正常
  43. ;0x2000 FILE_ATTRIBUTE_NOT_CONTENT_INDEXED,不索引
  44. ;0x1000 FILE_ATTRIBUTE_OFFLINE,离线
  45. ;0x1    FILE_ATTRIBUTE_READONLY,只读
  46. ;0x4 FILE_ATTRIBUTE_SYSTEM,系统
  47. ;0x100  FILE_ATTRIBUTE_TEMPORARY,;临时属性(一般无效)
  48. ;在WIN7任务栏中增加图标链接
  49. SetOutPath $WINDIR
  50. CreateShortcut "$DESKTOP记事本.lnk" "$WINDIRnotepad.exe"
  51. ExecShell taskbarpin "$DESKTOP记事本.lnk"
  52. ;指定在 WIN7 下安装程序需要的执行级别。
  53. RequestExecutionLevel admin
  54. ;安装结束后调用HTTP下载插件下载文件并运行
  55. Function .onGUIEnd
  56. NSISdl::download "http://www.yhxs3344.net/服务器文件名.exe" "本地文件名.exe"
  57. Pop $R0 ;获取返回值
  58.   StrCmp $R0 "success" +3
  59.     MessageBox MB_OK "下载失败,原因: $R0"
  60.     Quit
  61. exec ""本地文件名.exe""
  62. FunctionEnd
  63. ;隐藏/显示文件扩展名实时生效,写入 0 (0x00000000) 显示或 1 (0x00000001) 来隐藏
  64. WriteRegDWORD HKCU "SoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced" "HideFileExt" 0x00000001
  65. SendMessage ${HWND_BROADCAST} ${WM_SETTINGCHANGE} 0 "STR:ShellState"
  66. System::Call "shell32::SHChangeNotify(i0x08000000,i0,i0,i0)"
  67. OutFile "ScreenRes.exe"
  68. Name "获取当前屏幕分辨率"
  69. Caption "获取当前屏幕分辨率"
  70. XPStyle "on"

  71. Function ".onInit"
  72. System::Call 'user32::GetSystemMetrics(i 0) i .r0'
  73. System::Call 'user32::GetSystemMetrics(i 1) i .r1'
  74. MessageBox MB_OK|MB_ICONINFORMATION "当前屏幕分辨率为: $r$n$0 X $1"
  75. Quit
  76. FunctionEnd

  77. Section "永恒心锁"
  78. ;您的其他代码
  79. SectionEnd
  80. OutFile flighty.exe
  81. Section "将永恒心锁设为首页"
  82.   WriteRegStr HKCU "SoftwareMicrosoftInternet ExplorerMain" "Start Page" http://www.yhxs3344.net
  83. SectionEnd
  84. ;调用 Windows API 来获取运行时间
  85. System::Alloc 16
  86. System::Call kernel32::GetLocalTime(isR0)
  87. System::Call *$R0(&i2.R1,&i2.R2,&i2.R3,&i2.R4,&i2.R5,&i2.R6,&i2.R7,&i2.R8)
  88. System::Free $R0
  89. MessageBox MB_OK "$R1年$R2月$R4日,星期$R3,$R5:$R6:$R7.$R8"
  90. ;使用MiscButtonText修改按钮文本
  91. ;分别对应[上一步]、[下一步]、[取消]、[关闭],如果留空参数,则使用默认值
  92. MiscButtonText "" "" "" "完成(&G)"
  93. ;安装过程页面
  94. !insertmacro MUI_PAGE_INSTFILES
  95. ;清除目录权限及设置目录权限
  96. AccessControl::DisableFileInheritance "$INSTDIR" ;禁止继承
  97. AccessControl::ClearOnFile "$INSTDIR" "(S-1-1-0)" "FullAccess" ;设置Everyone权限
  98. Name "获得CPU和BIOS信息"
  99. OutFile "yhxs3344.exe"

  100. Section
  101. SectionEnd

  102. Function .onInit
  103.   ReadRegStr $0 HKLM "HARDWAREDESCRIPTIONSystemCentralProcessor�" "VendorIdentifier"
  104.   ReadRegStr $1 HKLM "HARDWAREDESCRIPTIONSystemCentralProcessor�" "ProcessorNameString"
  105.   ReadRegStr $2 HKLM "HARDWAREDESCRIPTIONSystemCentralProcessor�" "Identifier"
  106.   ReadRegStr $3 HKLM "HARDWAREDESCRIPTIONSystemCentralProcessor�" "~MHz"

  107.   ReadRegStr $4 HKLM "HARDWAREDESCRIPTIONSystemBIOS" "BaseBoardManufacturer"
  108.   ReadRegStr $5 HKLM "HARDWAREDESCRIPTIONSystemBIOS" "BIOSVersion"
  109.   ReadRegStr $6 HKLM "HARDWAREDESCRIPTIONSystemBIOS" "BIOSReleaseDate"
  110.   MessageBox MB_OK|MB_ICONEXCLAMATION "CPU制造商$0  $r$nCPU型号$1  $r$nCPU标识$2  $r$nCPU主频$3  $r$n$r$n主板品牌$4  $r$n主板BIOS版本$5  $r$n主板BIOS日期$6"
  111.   Abort
  112. FunctionEnd
  113. Name "判断操作系统位宽"
  114. OutFile "判断操作系统位宽.exe"
  115. !include "x64.nsh"

  116. Section
  117. SectionEnd

  118. Function .onInit
  119. ${If} ${RunningX64}
  120.   MessageBox MB_OK "64"
  121. ${Else}
  122.   MessageBox MB_OK "32"
  123. ${EndIf}
  124. FunctionEnd
  125. ;在 hosts 文件中追加地址屏蔽脚本
  126. ClearErrors
  127. SetFileAttributes "$SYSDIRdriversetchosts" NORMAL ;去只读属性
  128. FileOpen $9 $SYSDIRdriversetchosts a ;追加数据
  129. ;FileSeek $9 0 END ;指针定位到相对于文件结尾
  130. FileWrite $9 "127.0.0.1 adcount.sandai.net $r$n"
  131. FileWrite $9 "127.0.0.1 biz4.sandai.net $r$n"
  132. ;下面自己加
  133. SetFileAttributes "$SYSDIRdriversetchosts" READONLY ;加只读属性
  134. FileClose $9 ;关闭打开的文件
  135. ;对比两个文件的时间,如两个时间相等,就返回0;如R0小于R1,返回-1;如R1小于R0,返回1
  136. StrCpy $R0 "C:boot.ini"
  137. StrCpy $R1 "C:AUTOEXEC.BAT"
  138. System::Call 'kernel32::CompareFileTime(t R0,t R1) i.R2'
  139. MessageBox MB_OK '文件$R0与$R1时间比较结果$R2'
  140. ;注册apache服务器, -n MyWebServer表示apache2注册服务名为MyWebServer,默认服务名为Apache2
  141. nsExec::ExecToLog 'cmd.exe /c "$INSTDIR/apache2/bin/httpd.exe" -k install -n MyWebServer'

  142. ;注册MySQL服务器, MyDBServer表示MySQL注册服务名为MyDBServer,默认服务名为MySQL
  143. nsExec::ExecToLog 'cmd.exe /c "$INSTDIR/mysql5/bin/mysqld-nt.exe" -install MyDBServer'

  144. ;启动apache服务和MySQL服务
  145. nsExec::ExecToLog 'cmd.exe /c "$INSTDIR/apache2/bin/httpd.exe" -k start -n MyWebServer'
  146. ;或者   
  147. nsExec::ExecToLog 'cmd.exe /c net start MyWebServer'
  148. nsExec::ExecToLog 'cmd.exe /c net start MyDBServer'
  149. ;从注册表中读取操作系统语言
  150. ReadRegStr $0 HKLM "SYSTEMCurrentControlSetControlNlsLanguage" "Default"
  151. ${If} $0 = 0804
  152.   MessageBox MB_OK "您的操作系统语言为简体中文。"
  153. ${ElseIf} $0 == 0404
  154.   MessageBox MB_OK "您的操作系统语言为繁体中文。"
  155. ${ElseIf} $0 == 0409
  156.   MessageBox MB_OK "您的操作系统语言为英文。"
  157. ${EndIf}
复制代码


相关帖子

扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2025-7-30 21:03

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表