@echo off
chcp 1255 >nul
title החלפת DLL חכמה עם ריסט אופציונלי

set "SRC=%USERPROFILE%\Downloads\Hardlinkshellext.dll"
set "DST=C:\Program Files\LinkShellExtension\Hardlinkshellext.dll"
set "TMP=%DST%.new"
set "VBS=%temp%\ask_reboot.vbs"

if not exist "%SRC%" (
    echo MsgBox "שגיאה: הקובץ לא נמצא ב-Downloads", vbCritical, "שגיאה" > "%VBS%"
    cscript //nologo "%VBS%"
    del "%VBS%"
    exit /b
)

taskkill /f /im explorer.exe >nul 2>&1
timeout /t 2 >nul

regsvr32 /u "%DST%" >nul 2>&1
copy /Y "%SRC%" "%DST%" >nul 2>&1

if errorlevel 1 goto NEED_REBOOT

regsvr32 "%DST%" >nul 2>&1
start explorer.exe

echo MsgBox "ה-DLL הוחלף בהצלחה ללא צורך באתחול מחדש.", vbInformation, "הצלחה" > "%VBS%"
cscript //nologo "%VBS%"
del "%VBS%"
exit /b

:NEED_REBOOT
copy /Y "%SRC%" "%TMP%" >nul

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager" ^
 /v PendingFileRenameOperations /t REG_MULTI_SZ ^
 /d "\??\%DST%\0\??\%TMP%" /f >nul

echo WScript.Echo MsgBox("הקובץ היה בשימוש." ^& vbCrLf ^& vbCrLf ^& _
"האם לבצע אתחול מחדש עכשיו?", vb
