Chào các bạn thành viên, topic này được mở ra để chia sẻ hình ảnh và cách tạo boot cho các bản boot khác mà ta thường thấy trên mạng ngoài 2 bản boot chính đang có trên diễn đàn. Tôi thì khả năng có hạn, chỉ biết chia sẻ lại hình ảnh và một ít cách làm vụn vặt, tôi mong là có nhiều bạn sẽ thông cảm và hổ trợ, góp ý thêm cho topic. Cảm ơn bác @@sec0 và cháu @haxoma đã góp ý cho tôi mở thêm topic này.
Mở đầu thì qua giới thiệu của @haxoma về bản COMSS USB BOOT, tôi có tìm hiểu thì thấy người ta giới thiệu về nó từ đây, nó không có WinPE, chỉ toàn là tổng hợp các file ISO về Antivirus, Ultilites ....
Summary:
The bootable USB flash drive COMSS Boot USB contains anti-virus scanners for checking and treating computers and laptops, as well as utilities for checking equipment and working with HDD and SSD drives
This Boot CD Contains:
Antivirus Utilities:
Antivirus Live CD 31.0-0.102.0 (2019, zk1234) - Console antivirus scanner ClamAV.
Avira Rescue System (2016-09-16, Avira Operations) - Ubuntu OS with Avira antivirus scanner, file manager, web browser, Gparted, RegEdit. Online update.
Comodo Rescue Disk (2013-04-16, Comodo Group) - Linux OS with an antivirus scanner Comodo, file manager and web browser. Online update.
Dr.Web LiveDisk (2019-11-24, Доктор Веб) - Linux OS with Dr.Web anti-virus scanner, file manager and web browser. Online update.
ESET SysRescue (2019-06-07, ESET) - Linux OS with ESET SysRescue antivirus scanner , file manager, web browser, Gparted. Online update.
Tôi đã vào từng folder tìm nhưng không hề thấy cái file: "CREATE_BOOT_USB.bat" ở đâu cả. Khi boot vào máy UEFI thì nó hiện như sau:
Các bạn có thấy nó lưu ý boot sang Legacy không? Lúc đó tôi chưa chỉnh sửa gì từ Bootice, đem gắn qua máy Legacy thì bị lỗi NO boot operating system. Sau khi tôi chỉnh lại ProcessPBR với Syslinux thì boot vào lại Legacy nó hiện ra như sau:
Hình dưới cho thấy tôi test trực tiếp từ thẻ nhớ trên máy ảo nên nó báo không có Windows là đúng:
Vào xong các bạn nhớ chạy update như sau:
Tôi làm tượng trưng 1 soft DrWeb, nếu các bạn muốn xem hình của soft khác thì cho tôi hay nhé.
Vậy là xong một bản boot tổng hợp các tools, tôi xin tạm ngưng ở đây, khi nào có bản boot khác tôi sẽ lại giới thiệu tiếp. Cảm ơn tất cả các bạn đã theo dõi nhé.
UPDATE CÁC MỤC BỔ ÍCH CÓ TRONG TOPIC:
Thân chào các bạn, qua 29 pages thì có mấy mục chủ yếu tích hợp và tạo thêm bản Win XPE, tôi sẽ update từ từ các thông tin lên #1 để cho các bạn tiện theo dõi.
1/- TÍCH HỢP BỘ COMSS VÀO USB ANHDVBOOT
Trước hết là phần hướng dẫn tích hợp bộ COMSS vào usbboot của Anhdv do tác giả @secpol. Phần này bắt đầu từ cmt #31, các bạn chịu khó đọc cho hết các cmt sau đó nhé.
4/- TỰ TẠO BẢN WINDOWS-XPE VỚI DUNG LƯỢNG ÍT NHẤT, PHẦN APPS DÙNG THÊM CỦA CÁC BẠN KHÁC.
Ở phần này đúng ra trước đó là nhờ @Le Duc 287 giới thiệu lại cách tạo bản Windows-PESE, tôi có làm thử lại nhưng không ưng ý lắm. Sau khi chuyển qua làm Windows-XPE thì tôi thấy phù hợp hơn. Từ cmt # 424 và các cmt kế tiếp của tác giả @lvt491, các bạn sẽ thấy đầy đủ chi tiết với hình ảnh và cách tạo code cho phần Apps riêng biệt.
Ở bên ổ khác, folder XPE đã từng chạy thì nó có đầy đủ x64 và x86, giờ bác chép sang bên này cháu nhé: Chép vào và đang chạy đây cháu:
vn-z.vn
Nếu bạn nào có thời gian thì vui lòng xem thêm các cmt trước đó, có thêm các code của @Le Duc 287, @hoanchien, @trungminh, tất cả dành cho cách tạo bản XPE và apps hoàn chỉnh.
Apps thì tôi dùng Apps của các bạn ANHDV, HOANCHIEN, SERGEI.
LỜI CẢM ƠN:
Tôi xin chân thành cảm ơn các tác giả của các bộ boot: ANHDVBOOT, MCBOOT, DLCBOOT VÀ SERGEI STREILEC, xin phép được sử dụng tài nguyên của các bạn trong topic này.
Làm như vậy sẽ tốn RAM lắm, 1 cái App đã hơn 800Mb rồi, 2 cái tầm 1.7Gb, máy bạn chắc nhiều RAM hử ^^. Máy mình 4Gb bọ. Tối rảnh mình mò code gửi bạn sau nhá
kết quả thế nào rồi bạn. mình vẫn thích dùng lệnh cmd của win hơn. mình làm đc mont cả file apps.wim cả appsx64 và cả driver.wim trước khi hỏi bạn nhưng phải tạo 3 file .cmd. làm mọi cách ko dồn vào 1 file được. thấy bạn bảo file .au3 dễ code nhưng mình thử code lại nhg vẫn ko dồn vào 1 fle đc. nếu làm 2 hoặc 3 au3 thì được mình thử rồi nhưng cuối cùng mình dùng cmd vẫn thích chính chủ hơn
kết quả thế nào rồi bạn. mình vẫn thích dùng lệnh cmd của win hơn. mình làm đc mont cả file apps.wim cả appsx64 và cả driver.wim trước khi hỏi bạn nhưng phải tạo 3 file .cmd. làm mọi cách ko dồn vào 1 file được. thấy bạn bảo file .au3 dễ code nhưng mình thử code lại nhg vẫn ko dồn vào 1 fle đc. nếu làm 2 hoặc 3 au3 thì được mình thử rồi nhưng cuối cùng mình dùng cmd vẫn thích chính chủ hơn
Bác hiểu rồi cháu, bởi vì bên bác nó hiện ra sao thì bác phải báo lại cho đúng, nếu không thì làm mất lòng tin của các cháu đúng không? Đối với bác, tất cả đã ổn rồi, vì các cháu khác nhờ cháu làm thêm code thì bác cũng test xem nó ra sao thôi cháu.
Dạ không phải như bác nghĩ đâu ạ, a e bọn cháu sẽ hướng dẫn bác làm đến khi thành công thì thôi ạ, cũng là nơi để a e chưa biết xem qua bài viết và coment là có thể làm đc, thời điểm cháu tiến hành làm và build win không có ai để hỏi cả, mò mẫm làm có khi mất cả mấy ngày không đc chút nào cả, giờ có topnic này tốt quá bác ạ, các bạn ai biết thì chia sẻ thêm để ae cùng nghiên cứu xây dựng thêm cho hoàn thiện.
kết quả thế nào rồi bạn. mình vẫn thích dùng lệnh cmd của win hơn. mình làm đc mont cả file apps.wim cả appsx64 và cả driver.wim trước khi hỏi bạn nhưng phải tạo 3 file .cmd. làm mọi cách ko dồn vào 1 file được. thấy bạn bảo file .au3 dễ code nhưng mình thử code lại nhg vẫn ko dồn vào 1 fle đc. nếu làm 2 hoặc 3 au3 thì được mình thử rồi nhưng cuối cùng mình dùng cmd vẫn thích chính chủ hơn
#NoTrayIcon
Global $ppapps = False, $sdidrv = False
_main()
Func _main()
SplashTextOn("", "Processing Shortcuts. Please wait ...", 300, 50, -1, -1, BitOR(1, 32))
If Not FileExists(@DesktopDir & "\Clear Temp.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153")
If Not FileExists(@DesktopDir & "\Admin Login.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44")
If Not FileExists(@DesktopDir & "\Shutdown.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Shutdown,%ProgramFiles%\WinXShell\WinXShell.exe,-ui -jcfg wxsUI\UI_Shutdown.zip\full.jcfg,%ProgramFiles%\WinXShell\wxsUI\Power.ico")
If Not FileExists(@DesktopDir & "\Load Shortcut.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Load Shortcut,%WinDir%\AutoIt3.exe,%WinDir%\Peapps.au3,%WinDir%\System32\shell32.dll#238")
If FileExists("X:\Users\Administrator\Desktop\Admin Login.LNK") Then _exec("Pecmd.exe FILE X:\Users\Administrator\Desktop\Admin Login.LNK")
_reloadsc()
If Not $ppapps Or Not $sdidrv Then
_mapiso("Apps.iso")
_reloadsc()
EndIf
If Not $ppapps Then
_mapwim("Apps.wim")
_reloadsc()
EndIf
If Not $sdidrv Then
_mapiso("Driver.iso")
_reloadsc()
EndIf
_loadapps64()
SplashOff()
If Not $ppapps And Not $sdidrv Then MsgBox(48, "WARNING", "Necessary files were not found or not mounted !", 9)
Exit
EndFunc
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps.wim", 2, "B:\Apps64")
_checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Func _reloadsc()
If Not $ppapps Then
$ppapps = _checkapps("Apps\pstart.exe", "PSTART", 0)
EndIf
If Not $sdidrv Then
$sdidrv = _checkdrvs("DriverPacks\SDI_auto.cmd", "Inst Driver")
EndIf
EndFunc
Func _checkapps($file, $link, $wcs = 1)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path)
If $wcs = 1 Then _loadwcs($path)
If FileExists(@DesktopDir & "\" & $link & ".LNK") Then ShellExecute(@DesktopDir & "\" & $link & ".LNK")
Return True
EndIf
Next
Return False
EndFunc
Func _checkdrvs($file, $link)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path & ",,%WinDir%\System32\shell32.dll#162")
Return True
EndIf
Next
Return False
EndFunc
Func _loadwcs($fpath)
Local $fdir = StringRegExpReplace($fpath, "\\[^\\]*$", "")
If @error Then Return
Local $fwcs = $fdir & "\apps.wcs"
If FileExists($fwcs) Then _exec("Pecmd.exe LOAD " & $fwcs)
EndFunc
Func _mapiso($file)
Local $iso = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$iso = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$iso = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\iso\" & $file) Then
$iso = Chr($i) & ":\iso\" & $file
ExitLoop
EndIf
Next
If $iso <> "" Then
_exec("imdisk.exe -a -f " & $iso & " -m #:")
EndIf
EndFunc
Func _mapwim($file, $indx = 1, $path = "B:\Apps")
Local $wim = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$wim = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$wim = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\wim\" & $file) Then
$wim = Chr($i) & ":\wim\" & $file
ExitLoop
EndIf
Next
If $wim <> "" Then
If Not FileExists($path) Then _exec("MD " & $path)
If FileExists($path) Then
_exec("DISM.exe /Mount-Wim /WimFile:" & $wim & " /index:" & $indx & " /MountDir:" & $path)
EndIf
EndIf
EndFunc
Func _exec($scommand)
RunWait(@ComSpec & ' /C ' & $scommand, '', @SW_HIDE)
EndFunc
;Edit by LVT491 (2020-08-19)
Đây nhé bạn, code này sửa trên điện thoại nên chưa test:
Dùng gói Apps.wim của Anhdv
Mã:
#NoTrayIcon
Global $ppapps = False, $sdidrv = False
_main()
Func _main()
SplashTextOn("", "Processing Shortcuts. Please wait ...", 300, 50, -1, -1, BitOR(1, 32))
If Not FileExists(@DesktopDir & "\Clear Temp.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153")
If Not FileExists(@DesktopDir & "\Admin Login.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44")
If Not FileExists(@DesktopDir & "\Shutdown.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Shutdown,%ProgramFiles%\WinXShell\WinXShell.exe,-ui -jcfg wxsUI\UI_Shutdown.zip\full.jcfg,%ProgramFiles%\WinXShell\wxsUI\Power.ico")
If Not FileExists(@DesktopDir & "\Load Shortcut.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Load Shortcut,%WinDir%\AutoIt3.exe,%WinDir%\Peapps.au3,%WinDir%\System32\shell32.dll#238")
If FileExists("X:\Users\Administrator\Desktop\Admin Login.LNK") Then _exec("Pecmd.exe FILE X:\Users\Administrator\Desktop\Admin Login.LNK")
_reloadsc()
If Not $ppapps Or Not $sdidrv Then
_mapiso("Apps.iso")
_reloadsc()
EndIf
If Not $ppapps Then
_mapwim("Apps.wim")
_reloadsc()
EndIf
If Not $sdidrv Then
_mapiso("Driver.iso")
_reloadsc()
EndIf
_loadapps64()
SplashOff()
If Not $ppapps And Not $sdidrv Then MsgBox(48, "WARNING", "Necessary files were not found or not mounted !", 9)
Exit
EndFunc
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps.wim", 2, "B:\Apps64")
checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Func _reloadsc()
If Not $ppapps Then
$ppapps = _checkapps("Apps\pstart.exe", "PSTART", 0)
EndIf
If Not $sdidrv Then
$sdidrv = _checkdrvs("DriverPacks\SDI_auto.cmd", "Inst Driver")
EndIf
EndFunc
Func _checkapps($file, $link, $wcs = 1)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path)
If $wcs = 1 Then _loadwcs($path)
If FileExists(@DesktopDir & "\" & $link & ".LNK") Then ShellExecute(@DesktopDir & "\" & $link & ".LNK")
Return True
EndIf
Next
Return False
EndFunc
Func _checkdrvs($file, $link)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path & ",,%WinDir%\System32\shell32.dll#162")
Return True
EndIf
Next
Return False
EndFunc
Func _loadwcs($fpath)
Local $fdir = StringRegExpReplace($fpath, "\\[^\\]*$", "")
If @error Then Return
Local $fwcs = $fdir & "\apps.wcs"
If FileExists($fwcs) Then _exec("Pecmd.exe LOAD " & $fwcs)
EndFunc
Func _mapiso($file)
Local $iso = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$iso = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$iso = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\iso\" & $file) Then
$iso = Chr($i) & ":\iso\" & $file
ExitLoop
EndIf
Next
If $iso <> "" Then
_exec("imdisk.exe -a -f " & $iso & " -m #:")
EndIf
EndFunc
Func _mapwim($file, $indx = 1, $path = "B:\Apps")
Local $wim = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$wim = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$wim = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\wim\" & $file) Then
$wim = Chr($i) & ":\wim\" & $file
ExitLoop
EndIf
Next
If $wim <> "" Then
If Not FileExists($path) Then _exec("MD " & $path)
If FileExists($path) Then
_exec("DISM.exe /Mount-Wim /WimFile:" & $wim & " /index:" & $indx & " /MountDir:" & $path)
EndIf
EndIf
EndFunc
Func _exec($scommand)
RunWait(@ComSpec & ' /C ' & $scommand, '', @SW_HIDE)
EndFunc
;Edit by LVT491 (2020-08-19)
Bạn sửa lại chỗ này:
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps.wim", 2, "B:\Apps64")
checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Thành như thế này là được nhé (mình đã sửa và chạy tốt)
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps64.wim", 2, "B:\Apps64")
$wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Của mình có 2 apps là Apps.wim và Apps64.wim
Nếu của bạn có 1 file Apps.wim mà muốn mount 1 ra Apps và 2 ra Apps64 thì chỉ sửa lại
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps.wim", 2, "B:\Apps64")
$wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Bạn sửa lại chỗ này:
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps.wim", 2, "B:\Apps64")
checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Thành như thế này là được nhé (mình đã sửa và chạy tốt)
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps64.wim", 2, "B:\Apps64")
$wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Của mình có 2 apps là Apps.wim và Apps64.wim
Nếu của bạn có 1 file Apps.wim mà muốn mount 1 ra Apps và 2 ra Apps64 thì chỉ sửa lại
Func _loadapps64()
Local $wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
If Not $wim64 Then
_mapwim("Apps.wim", 2, "B:\Apps64")
$wim64 = _checkapps("Apps64\pstart.exe", "PSTARTx64")
EndIf
EndFunc
Bạn làm cho tất vào ổ Ram như thế thì chỉ có những máy ram nhiều mới chạy được những máy cùi là chịu chết. Máy mình 4g ram mà để ram 70% thì mới chạy được apps còn driver phải mount CD. CÒn bản winpe32 mỗi mount apps 1 số đã không chạy được rồi
Bạn làm cho tất vào ổ Ram như thế thì chỉ có những máy ram nhiều mới chạy được những máy cùi là chịu chết. Máy mình 4g ram mà để ram 70% thì mới chạy được apps còn driver phải mount CD. CÒn bản winpe32 mỗi mount apps 1 số đã không chạy được rồi
Bạn làm cho tất vào ổ Ram như thế thì chỉ có những máy ram nhiều mới chạy được những máy cùi là chịu chết. Máy mình 4g ram mà để ram 70% thì mới chạy được apps còn driver phải mount CD. CÒn bản winpe32 mỗi mount apps 1 số đã không chạy được rồi
Apps.iso mình mount vào ổ ảo chứ ko pải ổ b. Mình dùng nguyên file iso của @hoanchien Ko chỉnh sửa gì cả. Mình chỉ mount thêm một file apps64 mình làm những phần mềm thiết yếu thôi vào ổ b thôi. Máy bên mình và máy bạn bè ng thân toàn 8G trở lên lên ko lo thiếu ram
code giống của @lvt491 và sửa lại toàn bộ như sau mình mount thêm một file appsx64 trong foder DucLD mình đặt tên theo từng file AppsDucLD là mount file Appsx64 mình làm. ADMC là mount file iso của bạn. AnhDV là mount file Apps của AnhDV. để 3 file AutoIt3.exe và MountAD.au3 và PecmdAdminLoad.ini trong foder AD của foder windows
Mã:
#NoTrayIcon
Global $AppsDucLD = False, $ADMC = False
_main()
Func _main()
SplashTextOn("", "Processing Shortcuts. Please wait ...", 300, 50, -1, -1, BitOR(1, 32))
If Not FileExists(@DesktopDir & "\Clear Temp.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153")
If Not FileExists(@DesktopDir & "\Admin Login.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\AD\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44")
If Not FileExists(@DesktopDir & "\Shutdown.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Shutdown,%ProgramFiles%\WinXShell\WinXShell.exe,-ui -jcfg wxsUI\UI_Shutdown.zip\full.jcfg,%ProgramFiles%\WinXShell\wxsUI\Power.ico")
If Not FileExists(@DesktopDir & "\Load Shortcut.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Load Shortcut,%WinDir%\AD\AutoIt3.exe,%WinDir%\AD\MountAD.au3,%WinDir%\System32\shell32.dll#238")
If FileExists("X:\Users\Administrator\Desktop\Admin Login.LNK") Then _exec("Pecmd.exe FILE X:\Users\Administrator\Desktop\Admin Login.LNK")
_reloadAppsDriver()
If Not $AppsDucLD Or Not $ADMC Then
If Not $AppsDucLD Then
_mapwim("Appsx64.wim")
_reloadAppsDriver()
EndIf
_mapiso("Driver.iso")
_reloadAppsDriver()
EndIf
If Not $ADMC Then
_mapiso("Apps.iso")
_reloadAppsDriver()
EndIf
_loadAppsAnhDV()
SplashOff()
If Not $AppsDucLD And Not $ADMC Then MsgBox(48, "WARNING", "Necessary files were not found or not mounted !", 9)
Exit
EndFunc
Func _loadAppsAnhDV()
Local $wimAnhDV = _checkApps("AppsAnhDV\pstart.exe", "Apps AnhDV")
If Not $wimAnhDV Then
_mapwim("Apps.wim", 2, "B:\AppsAnhDV")
_checkApps("AppsAnhDV\pstart.exe", "Apps AnhDV")
EndIf
EndFunc
Func _reloadAppsDriver()
If Not $AppsDucLD Then
$AppsDucLD = _checkApps("DucLD\pstart64.exe", "Apps DucLD", 0)
EndIf
If Not $ADMC Then
$ADMC = _checkDrvs("Driver\x64\DR.BAT", "Inst Driver MC")
$ADMC = _checkApps("Programs\PStart64.exe", "Apps MC", 0)
EndIf
EndFunc
Func _checkApps($file, $link, $wcs = 1)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path)
If $wcs = 1 Then _loadwcs($path)
If FileExists(@DesktopDir & "\" & $link & ".LNK") Then ShellExecute(@DesktopDir & "\" & $link & ".LNK")
Return True
EndIf
Next
Return False
EndFunc
Func _checkDrvs($file, $link)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path & ",,%WinDir%\System32\shell32.dll#162")
Return True
EndIf
Next
Return False
EndFunc
Func _loadwcs($fpath)
Local $fdir = StringRegExpReplace($fpath, "\\[^\\]*$", "")
If @error Then Return
Local $fwcs = $fdir & "\apps.wcs"
If FileExists($fwcs) Then _exec("Pecmd.exe LOAD " & $fwcs)
EndFunc
Func _mapiso($file)
Local $iso = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$iso = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$iso = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\iso\" & $file) Then
$iso = Chr($i) & ":\iso\" & $file
ExitLoop
EndIf
Next
If $iso <> "" Then
_exec("imdisk.exe -a -f " & $iso & " -m #:")
EndIf
EndFunc
Func _mapwim($file, $indx = 1, $path = "B:\DucLD")
Local $wim = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$wim = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\DucLD\" & $file) Then
$wim = Chr($i) & ":\DucLD\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$wim = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\wim\" & $file) Then
$wim = Chr($i) & ":\wim\" & $file
ExitLoop
EndIf
Next
If $wim <> "" Then
If Not FileExists($path) Then _exec("MD " & $path)
If FileExists($path) Then
_exec("DISM.exe /Mount-Wim /WimFile:" & $wim & " /index:" & $indx & " /MountDir:" & $path)
EndIf
EndIf
EndFunc
Func _exec($scommand)
RunWait(@ComSpec & ' /C ' & $scommand, '', @SW_HIDE)
EndFunc
code giống của @lvt491 và sửa lại toàn bộ như sau mình mount thêm một file appsx64 trong foder DucLD mình đặt tên theo từng file AppsDucLD là mount file Appsx64 mình làm. ADMC là mount file iso của bạn. AnhDV là mount file Apps của AnhDV. để 3 file AutoIt3.exe và MountAD.au3 và PecmdAdminLoad.ini trong foder AD của foder windows
Mã:
#NoTrayIcon
Global $AppsDucLD = False, $ADMC = False
_main()
Func _main()
SplashTextOn("", "Processing Shortcuts. Please wait ...", 300, 50, -1, -1, BitOR(1, 32))
If Not FileExists(@DesktopDir & "\Clear Temp.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Clear Temp,%WinDir%\System32\PECMD.exe,TEMP DELETE,%WinDir%\System32\shell32.dll#153")
If Not FileExists(@DesktopDir & "\Admin Login.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Admin Login,%WinDir%\System32\PECMD.exe,LOAD %WinDir%\AD\PecmdAdminLoad.ini,%WinDir%\System32\shell32.dll#44")
If Not FileExists(@DesktopDir & "\Shutdown.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Shutdown,%ProgramFiles%\WinXShell\WinXShell.exe,-ui -jcfg wxsUI\UI_Shutdown.zip\full.jcfg,%ProgramFiles%\WinXShell\wxsUI\Power.ico")
If Not FileExists(@DesktopDir & "\Load Shortcut.LNK") Then _exec("Pecmd.exe LINK !%Desktop%\Load Shortcut,%WinDir%\AD\AutoIt3.exe,%WinDir%\AD\MountAD.au3,%WinDir%\System32\shell32.dll#238")
If FileExists("X:\Users\Administrator\Desktop\Admin Login.LNK") Then _exec("Pecmd.exe FILE X:\Users\Administrator\Desktop\Admin Login.LNK")
_reloadAppsDriver()
If Not $AppsDucLD Or Not $ADMC Then
If Not $AppsDucLD Then
_mapwim("Appsx64.wim")
_reloadAppsDriver()
EndIf
_mapiso("Driver.iso")
_reloadAppsDriver()
EndIf
If Not $ADMC Then
_mapiso("Apps.iso")
_reloadAppsDriver()
EndIf
_loadAppsAnhDV()
SplashOff()
If Not $AppsDucLD And Not $ADMC Then MsgBox(48, "WARNING", "Necessary files were not found or not mounted !", 9)
Exit
EndFunc
Func _loadAppsAnhDV()
Local $wimAnhDV = _checkApps("AppsAnhDV\pstart.exe", "Apps AnhDV")
If Not $wimAnhDV Then
_mapwim("Apps.wim", 2, "B:\AppsAnhDV")
_checkApps("AppsAnhDV\pstart.exe", "Apps AnhDV")
EndIf
EndFunc
Func _reloadAppsDriver()
If Not $AppsDucLD Then
$AppsDucLD = _checkApps("DucLD\pstart64.exe", "Apps DucLD", 0)
EndIf
If Not $ADMC Then
$ADMC = _checkDrvs("Driver\x64\DR.BAT", "Inst Driver MC")
$ADMC = _checkApps("Programs\PStart64.exe", "Apps MC", 0)
EndIf
EndFunc
Func _checkApps($file, $link, $wcs = 1)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path)
If $wcs = 1 Then _loadwcs($path)
If FileExists(@DesktopDir & "\" & $link & ".LNK") Then ShellExecute(@DesktopDir & "\" & $link & ".LNK")
Return True
EndIf
Next
Return False
EndFunc
Func _checkDrvs($file, $link)
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
Local $path = Chr($i) & ":\" & $file
_exec("Pecmd.exe LINK !%Desktop%\" & $link & "," & $path & ",,%WinDir%\System32\shell32.dll#162")
Return True
EndIf
Next
Return False
EndFunc
Func _loadwcs($fpath)
Local $fdir = StringRegExpReplace($fpath, "\\[^\\]*$", "")
If @error Then Return
Local $fwcs = $fdir & "\apps.wcs"
If FileExists($fwcs) Then _exec("Pecmd.exe LOAD " & $fwcs)
EndFunc
Func _mapiso($file)
Local $iso = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$iso = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$iso = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\iso\" & $file) Then
$iso = Chr($i) & ":\iso\" & $file
ExitLoop
EndIf
Next
If $iso <> "" Then
_exec("imdisk.exe -a -f " & $iso & " -m #:")
EndIf
EndFunc
Func _mapwim($file, $indx = 1, $path = "B:\DucLD")
Local $wim = ""
For $i = 65 To 90
If FileExists(Chr($i) & ":\" & $file) Then
$wim = Chr($i) & ":\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\DucLD\" & $file) Then
$wim = Chr($i) & ":\DucLD\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\apps\" & $file) Then
$wim = Chr($i) & ":\apps\" & $file
ExitLoop
ElseIf FileExists(Chr($i) & ":\wim\" & $file) Then
$wim = Chr($i) & ":\wim\" & $file
ExitLoop
EndIf
Next
If $wim <> "" Then
If Not FileExists($path) Then _exec("MD " & $path)
If FileExists($path) Then
_exec("DISM.exe /Mount-Wim /WimFile:" & $wim & " /index:" & $indx & " /MountDir:" & $path)
EndIf
EndIf
EndFunc
Func _exec($scommand)
RunWait(@ComSpec & ' /C ' & $scommand, '', @SW_HIDE)
EndFunc
Bạn làm cho tất vào ổ Ram như thế thì chỉ có những máy ram nhiều mới chạy được những máy cùi là chịu chết. Máy mình 4g ram mà để ram 70% thì mới chạy được apps còn driver phải mount CD. CÒn bản winpe32 mỗi mount apps 1 số đã không chạy được rồi