- 積分
- 770
- 最後登入
- 1970-1-1
- 閱讀權限
- 150
- 積分
- 770
- 帖子
- 精華
升級
100%
|
本帖最後由 foster 於 2021-10-29 12:25 編輯
其實,經多次實驗結果,重點不在 RunOnce 功能而是在執行的動作型態,因為兩種情況都會發生。
1.如果使用將指令直接寫在 RunOnce 裡,就不需要針對第一個使用者第一次登入,不需額外再執行一次指令。
reg load HKLM\DEFAULT %SystemDrive%\Users\Default\ntuser.dat
reg add "HKLM\DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v ClassicContextMenu /t REG_SZ /d "cmd /c reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve & taskkill /f /im explorer.exe & start explorer.exe" /f
reg unload HKLM\DEFAULT
2.如果使用將.bat寫在 RunOnce 裡,沒有執行其他.bat,就不需要針對第一個使用者第一次登入,不需要額外再執行一次指令。
cmd /c %WINDIR%\Setup\Script\ClassicContextMenu.bat
reg load HKLM\DEFAULT %SystemDrive%\Users\Default\ntuser.dat
reg add "HKLM\DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v ClassicContextMenu /t REG_SZ /d "%WINDIR%\Setup\Script\ClassicContextMenu.bat" /f
reg unload HKLM\DEFAULT
ClassicContextMenu.bat 內容
@echo off
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe & start explorer.exe
3.如果使用將.bat寫在 RunOnce 裡,有執行其他.bat,就需要針對第一個使用者第一次登入,需要額外再執行一次指令。
cmd /c %WINDIR%\Setup\Script\ClassicContextMenu.bat
reg load HKLM\DEFAULT %SystemDrive%\Users\Default\ntuser.dat
reg add "HKLM\DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v ClassicContextMenu /t REG_SZ /d "%WINDIR%\Setup\Script\ClassicContextMenu.bat" /f
reg unload HKLM\DEFAULT
ClassicContextMenu.bat 內容
@echo off
if exist "%WINDIR%\Setup\Firewall_Off.bat" ("%WINDIR%\Setup\Script\Firewall_Off.bat" && del "%WINDIR%\Setup\Script\Firewall_Off.bat")
reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve
taskkill /f /im explorer.exe & start explorer.exe
Firewall_Off.bat 內容
@echo off
netsh advfirewall set allprofile state off
============================
第三點為什麼會這樣我也不知道原因,但就是真的要再額外執行一次指令。
不過,發現在 SetupComplete.cmd 執行 netsh advfirewall set allprofile state off ,在Win11防火牆就關閉了(記得Win10就是有問題所以無解,之後再試試==>Win10 21H1 已經可用,之前某一版舊版本前不能用)。所以程式碼也簡單了。
netsh advfirewall set allprofile state off
reg load HKLM\DEFAULT %SystemDrive%\Users\Default\ntuser.dat
reg add "HKLM\DEFAULT\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v ClassicContextMenu /t REG_SZ /d "cmd /c reg add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve & taskkill /f /im explorer.exe & start explorer.exe" /f
reg unload HKLM\DEFAULT
|
|