Taşınabilir (portable) veya bazı uygulamaların kurulumunda program işlem yapabildiği uzantılar üzerinde varsayılan olarak ayarlama işlemi yapmamaktadır. 7-Zip gibi temel bir programı yüklediğinizde varsayılan olarak atama yapmasını bekliyorsunuz ancak ilgili uzantıların açılır listesine dahi ekleme yapmıyor. Bu konu içerisinde batch script ile regedite eklemeler yaparak programı ilgili uzantıların açılış listesine ekleyip kısmen varsayılan hale getirme işlemlerini anlatacağız. Kısmen dememin sebebi Microsoft'un bu bölümde algoritmasını açıklamadığı özel bir hash şifreleme sistemi olduğu için bunu ancak ayarlar uygulaması üzerinden yapabiliyorsunuz.
UYARILAR
• "Type" değişkeni içerisine istediğiniz kadar uzantı yazabilirsiniz. Tek yapmanız gereken yazdığınız her uzantıdan sonra boşluk bırakmanız.
• "Key" değişkenine program adıyla tanımlama yapmaya dikkat edin. Türkçe harf ve boşluk kullanmayın. Ayrıca benzersiz bir isim olması gerekmektedir. Benim tavsiyem Default_App_[Program adı] şeklinde bir isim verin.
• "Path" ve "Icon" değişkenlerinde " çift tırnak sembolünü kullanmayın.
► Simge ataması yapmadan işlem yapma;
Bu yöntemde program yolunu tanımlarken verdiğiniz .exe dosyasında hangi simge var ise onu kullanacaktır. Aşağıdaki kodu .bat veya .cmd uzantılı dosya içerisine yapıştırıp düzenleyip uygulayabilirsiniz.
echo off
chcp 65001
setlocal enabledelayedexpansion
cls
REM Yönetici yetki kontrolü ve yönetici yetkili cmd ekranı açma
reg query "HKU\S-1-5-19" > NUL 2>&1
if !errorlevel! NEQ 0 (Call :Powershell "Start-Process '%~f0' -Verb Runas"&exit)
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:: !Path!= Uygulama .exe'sinin yüklü olduğu dosya yolu
:: !Key!= Uygulama adını veya farklı bir isim verebilirsiniz. Benzersiz bir isim olması gerekiyor.
:: !Type!= Uzantıları içeren değişken
set Path=C:\Program Files\7-Zip\7zFM.exe
set Key=7-Zip
set Type=001 7z apfs arj bz2 bzip2 cpio deb dmg esd fat gz gzip hfs lha lzh lzma ntfs rar rpm squashfs swm tar taz tbz tbz2 tgz tpz txz wim xar xz z zip
Call :Default_App
:: Daha fazla program eklemek istiyorsanız. Bu alana yukarıda yer alan;
:: Path, Key, Type değişkenlerini kopyalayıp içeriğini düzenleyin.
:: Bu komutların sonuna Call:Default_App eklemeyi unutmayın
:: -------------------------------------------------------------
:: Tanımlamadan sonra simge sorunu oluşmaması için simge önbelleğini temizliyoruz.
:: Temizleme işleminde Dosya gezgini (explorer) kapatılıp yeniden açılır.
taskkill /f /im explorer.exe > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\IconCache.db" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\IconCacheToDelete\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\NotifyIcon\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\thumbcache_*.db" > NUL 2>&1
Call :Powershell "Start-Process '%Windir%\explorer.exe'"
:: -------------------------------------------------------------
echo İşlem tamamlandı...
timeout /t 3 /nobreak > NUL
exit
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:Default_App
:: Program varsayılan olarak ayarlanır.
FOR %%g in (!Type!) do (
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%g\UserChoice" /f > NUL 2>&1
)
reg add "HKCR\!Key!\shell\open\command" /ve /t REG_SZ /d "\"!Path!\" \"%%1\"" /f > NUL 2>&1
FOR %%g in (!Type!) do (
reg add "HKCR\.%%g" /ve /t REG_SZ /d "!Key!" /f > NUL 2>&1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%g\UserChoice" /v "ProgId" /t REG_SZ /d "!Key!" /f > NUL 2>&1
)
goto :eof
:Powershell
REM chcp 65001 kullanıldığında Powershell komutları ekranı kompakt görünüme sokuyor. Bunu önlemek için bu bölümde uygun geçişi sağlıyorum.
chcp 437 > NUL 2>&1
Powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -C %*
chcp 65001 > NUL 2>&1
goto :eof
► Özel simge atayıp işlem yapma;
Bu yöntemde özel simge tanımlayabilirsiniz. Ben 7-Zip simgesini sevmediğim için bu yöntemi kullanıyorum. Aşağıdaki kodu .bat veya .cmd uzantılı dosya içerisine yapıştırıp düzenleyip uygulayabilirsiniz.
echo off
chcp 65001
setlocal enabledelayedexpansion
cls
REM Yönetici yetki kontrolü ve yönetici yetkili cmd ekranı açma
reg query "HKU\S-1-5-19" > NUL 2>&1
if !errorlevel! NEQ 0 (Call :Powershell "Start-Process '%~f0' -Verb Runas"&exit)
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:: !Path!= Uygulama .exe'sinin yüklü olduğu dosya yolu
:: !Key!= Uygulama adını veya farklı bir isim verebilirsiniz. Benzersiz bir isim olması gerekiyor.
:: !Icon!= Uygulama simgesinin bulunduğu dosya yolu
:: !Type!= Uzantıları içeren değişken
set Path=C:\Program Files\7-Zip\7zFM.exe
set Key=7-Zip
set Icon=C:\Program Files\7-Zip\7-zipp.ico
set Type=001 7z apfs arj bz2 bzip2 cpio deb dmg esd fat gz gzip hfs lha lzh lzma ntfs rar rpm squashfs swm tar taz tbz tbz2 tgz tpz txz wim xar xz z zip
Call :Default_App
:: Daha fazla program eklemek istiyorsanız. Bu alana yukarıda yer alan;
:: Path, Key, Type değişkenlerini kopyalayıp içeriğini düzenleyin.
:: Bu komutların sonuna Call:Default_App eklemeyi unutmayın
:: -------------------------------------------------------------
:: Tanımlamadan sonra simge sorunu oluşmaması için simge önbelleğini temizliyoruz.
:: Temizleme işleminde Dosya gezgini (explorer) kapatılıp yeniden açılır.
taskkill /f /im explorer.exe > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\IconCache.db" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\IconCacheToDelete\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\NotifyIcon\*" > NUL 2>&1
DEL /F /Q /A "%LocalAppData%\Microsoft\Windows\Explorer\thumbcache_*.db" > NUL 2>&1
Call :Powershell "Start-Process '%Windir%\explorer.exe'"
:: -------------------------------------------------------------
echo İşlem tamamlandı...
timeout /t 3 /nobreak > NUL
exit
:: ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
:Default_App
:: Program varsayılan olarak ayarlanır.
FOR %%g in (!Type!) do (
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%g\UserChoice" /f > NUL 2>&1
)
reg add "HKCR\!Key!\shell\open\command" /ve /t REG_SZ /d "\"!Path!\" \"%%1\"" /f > NUL 2>&1
reg add "HKCR\!Key!\TypeIcon" /ve /t REG_SZ /d "!Icon!" /f > NUL 2>&1
FOR %%g in (!Type!) do (
reg add "HKCR\.%%g" /ve /t REG_SZ /d "!Key!" /f > NUL 2>&1
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.%%g\UserChoice" /v "ProgId" /t REG_SZ /d "!Key!" /f > NUL 2>&1
)
goto :eof
:Powershell
REM chcp 65001 kullanıldığında Powershell komutları ekranı kompakt görünüme sokuyor. Bunu önlemek için bu bölümde uygun geçişi sağlıyorum.
chcp 437 > NUL 2>&1
Powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Bypass -C %*
chcp 65001 > NUL 2>&1
goto :eof