Skip to content

Instantly share code, notes, and snippets.

@Kambaa
Last active February 20, 2024 20:43
Show Gist options
  • Save Kambaa/f7da75eb547dc35bbb9b14a2c37ca72b to your computer and use it in GitHub Desktop.
Save Kambaa/f7da75eb547dc35bbb9b14a2c37ca72b to your computer and use it in GitHub Desktop.
Windows Korumalı Alanı Ayarlamaları (Readme.md'yi okuyun) Windows Sandbox configuration examples (translate Readme.md)

Windows Korumalı Alanı (Windows SandBox) Ayarlamaları

Sisteme herhangi bir dosya bulaştırmadan, kapattığınızda tüm windows değişikliklerinin yok olacağı bir korumalı alan düşünün. Virüz olabileceğini düşündüğünüz dosyaları sisteminizde açmaktansa, hızlı bir şekilde korumalı alanı açıp, içerisinde kontrol edip, kapattığınızda sisteminizde herhangi bir sıkıntıya sebep olmadan işe yarayan harika bir ürün. Özelleştirme ayarlarını bildiğinizde, bilgisayarınızdaki bir klasöre bağlayıp, sadece o klasöre dosyaların kaydolmasını sağlayıp, isterseniz her açılışta otomaik çalışmasını istediğiniz komutları ayarlayabilirsiniz.

Eklenen örnek ayarlamalar:

1. Örnek geliştirme ortamı:

WindowsSandbox1.wsb(korumalı alan ile ilgili ayarların olduğu ve çift tıklayarak açılabilen) ve sandboxStartup.cmd(korumalı alan her ayağa kalktığında çalıştırılacak komutlar) dosyalardır. wsb dosyasındaki ayarlamalar ile:

  • Sistemimdeki C:\dev\sharedwithsandbox klasörünü, korumalı alanda C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox klasörü olarak gösterilmesini,
  • Sistemimdeki C:\dev\sharedwithsandbox\Shortcuts klasörünü korumalı alanın masaüstü olarak (C:\Users\WDAGUtilityAccount\Desktop) gösterilmesini ve bu sayede ayarladığım kısayolların korumalı alanda masaüstünde kolayca erişebileceğim yerde olmasını sağladım.
  • Windows terminal uygulamasının sistemimdeki varsayılan ayarlarını aynı şekilde olması adına, uygulamanın baktığı dizinde olacak şekilde ekledim.
  • sanal gpu(VGPU), korumalı alanda ses etkinleştirme ve ileri koruma ayarı gibi bazı ayarları ekledim.
  • Son olarak, korumalı alan her başladığında çalışması için bir cmd dosyası ayarlayıp bu cmd dosyasını(sandboxStartup.cmd) çalıştırması ayarını verdim. Burada dikkat edilmesi gereken şey cmd dosyasının bulunduğu dizini korumalı alanın anlayacağı şekilde vermek lazım(C:\dev\ şeklinde değil C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox... şeklinde vermek gerekli)

sandboxStartup.cmd dosyası ne yapıyor? Korumalı alan her açılıp kapandığında sistem bazında yapılan tüm ayarlamalar (uygulama yükleme, sistem klasöründeki değişiklikler vs.) uçmakta, o nedenle bu dosyaya vereceğim ayarlar her seferinde çalışacak, istediğim yüklemeleri ve ayarlamaları yapacak ve başarı ile tamamlandıktan sonra ben rahatça korumalı alanda işimi yapabileceğim. Bu dosyada satır satır yapılan işleri yazmaya çalışayım:

  • setx JAVA_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\jdk17" bu komut ile taşınabilir java development kit'i ortam değişkenlerine JAVA_HOME adıyla kaydediyorum.
  • setx M2_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\apache-maven-3.9.6" bu komut ile taşınabilir maven aracını ortam değişkenlerine M2_HOME adıyla kaydediyorum.
  • setx GIT_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\PortableGit" bu komut ile taşınabilir git versiyon kontrol sistemi uygulamasını ortam değişkenlerine GIT_HOME adıyla kaydediyorum.
  • setx VSC_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\vscode" bu komut ile taşınabilir visual stdio code'u ortam değişkenlerine VSC_HOME adıyla kaydediyorum.
  • setx PATH "%PATH%;%%JAVA_HOME%%\bin;%%M2_HOME%%\bin;%%GIT_HOME%%\bin" bu komut ile yukarıda isimlendirdiğim dizinlerin altında uygulamaların .exe dosyalarının bulundukları dizini PATH ortam değişkenine kaydediyorum ve bu sayede terminal üzerinden direk erişebilmeyi sağlıyorum
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu /v {20D04FE0-3AEA-1069-A2D8-08002B30309D} /t REG_DWORD /d 0 /f`
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /v {20D04FE0-3AEA-1069-A2D8-08002B30309D} /t REG_DWORD /d 0 /f
ie4uinit.exe -show

bu komutlarla sistem kayıt defterine eklemeler yapıp, "Bilgisayarım" ikonunun masaüstünde görüntülenmesi ayarlıyorum.

echo "installing powershell 7.4.1"
msiexec.exe /package "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\dls\PowerShell-7.4.1-win-x64.msi" /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1

bu komutla, daha önceden setup dosyasını indirip sistemimde korumalı alan ile paylaşılacak klasörün içine koyduğum Windows PowerShell uygulamasının kurulum(setup) dosyasını arka tarafta çalıştırıp otomatik yüklenmesini sağlıyorum.

echo "installing oh-my-posh"
"C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\dls\oh-my-posh-setup-amd64.exe" /VERYSILENT /CURRENTUSER 

bu komutla da benzer şekilde Windows Terminal ve PowerShell'lerin (hem sistemin kendisinin hem de benim yüklediğim) daha güzel görülmesini sağlayan "oh-my-posh" uygulamasını sessisce yüklenmesini sağlıyorum(yine daha önceden kurulum dosyasını indirip ilgili yere ayarlamış olduğumdan...)

echo "set oh-my-posh executable to env and install Meslo font"
"C:\Program Files\PowerShell\7\pwsh.exe" -Command "$env:Path += ';C:\Users\WDAGUtilityAccount\AppData\Local\Programs\oh-my-posh\bin'; oh-my-posh font install Meslo"

Bu komutla daha önce yüklemiş olduğum oh-my-posh uygulamasının PowerShell'lere etki etmesi için gerekli ayarları(ortam değişkenine ekleme, düzgün görülmesi adına ilgili fontları indirip yüklemesi işleri) sessizce yaptırıyorum.

echo "set up oh-my-posh auto start"
"C:\Program Files\PowerShell\7\pwsh.exe" -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine; New-Item -Path $PROFILE -Type File -Force; Add-Content -Path $PROFILE -Value 'oh-my-posh init pwsh | Invoke-Expression'"

Bu komutla da yine yüklediğim oh-my-posh'ın, yeni ayarladığım PowerShell'de varsayılan olarak karşıma çıkması için gereken ayarlamaları($Profile dosyası ayarlamaları) yapıyorum.

  • rundll32.exe sysdm.cpl,EditEnvironmentVariables ve son olarak bu kod ile birlikte, hem yapılan bütün işlerin bittiğini anlamam, hem de olası eksik olan bir durumun olup oılmadığını gözümle görmek adına ortam değişkenleri penceresini açıyorum.

Bu ayarlamalar sonrasında WindowsSandbox1.wsb dosyasına çift tıkladığımda güzel bir şekilde açılmakta ve yaptığım ayarlamalar uygulanıp kullanıma sunmaktadır.

2. Örnek: Emin Olmadığım Bir Programı korumalı alanda açma:

WindowsSandbox2.wsb ve autostartSpot**y.cmd dosyalarını kullanarak deneme amaçlı ayarladığım son denemem, aslında bunu ilk sıraya koyarak göstermek okuyan için daha rahat olurdu ama ben dosyaları ayarladığım sırada yazmayı uygun buldum. Bu örnekte de ilk örnekteki aynı klasörü bağlamöa ayarları mevcut. onun haricinde her başlangıçta çalışması adına autostartSpot**y.cmd dosyası ayarlı.

autostartSpot**y.cmd dosyasının yaptığına gelince.

  • powershell.exe -Command "New-NetFirewallRule -DisplayName 'spot**y' -Direction Inbound -Program 'C:\users\wdagutilityaccount\desktop\sharedwithsandbox\apps\spot**y\app\spot**y.exe' -Action Allow" bu komutu uygulamayı her açtığımda karşıma güvenlik duvarı izini gelmesi nedeniyle, iznin direk ayarlanması adına yazdım. Güvenlik duvarına ilgili uygulamayı güvenlik duvarına izin vermeyi sağlıyor.
  • powershell.exe -Command "Start-Process -WindowStyle Maximized -FilePath 'C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\Spot**y\Spot**yPortable.exe'" Bu komut da şüpheli programı ekranı büyütülmüş şekilde açılmasını sağlaması adına yazdım. Dolayısıyla Korumalı alan açıldıktan hemen sonra bu uygulama çalışacak. Son olarak bu ayarlama ile de WindowsSandbox2.wsb dosyasına çift tıklayıp açınca korumalı alan ayağa kalkacak ve uygulamayı otomatik çalıştıracak.

Bilginize sunar, iyilikler dilerim. KambaAbi

powershell.exe -Command "New-NetFirewallRule -DisplayName 'spot**y' -Direction Inbound -Program 'C:\users\wdagutilityaccount\desktop\sharedwithsandbox\apps\spot**y\app\spot**y.exe' -Action Allow"
powershell.exe -Command "Start-Process -WindowStyle Maximized -FilePath 'C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\Spot**y\Spot**yPortable.exe'"
rem SOURCE FOR FIREWALL RULE ADDING: https://winbuzzer.com/2021/12/26/windows-firewall-how-to-allow-or-block-or-a-program-from-accessing-the-internet-xcxwbt/
setx JAVA_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\jdk17"
setx M2_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\apache-maven-3.9.6"
setx GIT_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\PortableGit"
setx VSC_HOME "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\apps\vscode"
setx PATH "%PATH%;%%JAVA_HOME%%\bin;%%M2_HOME%%\bin;%%GIT_HOME%%\bin"
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu /v {20D04FE0-3AEA-1069-A2D8-08002B30309D} /t REG_DWORD /d 0 /f
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel /v {20D04FE0-3AEA-1069-A2D8-08002B30309D} /t REG_DWORD /d 0 /f
ie4uinit.exe -show
echo "installing powershell 7.4.1"
msiexec.exe /package "C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\dls\PowerShell-7.4.1-win-x64.msi" /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ADD_FILE_CONTEXT_MENU_RUNPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1 USE_MU=1 ENABLE_MU=1 ADD_PATH=1
echo "installing oh-my-posh"
"C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\dls\oh-my-posh-setup-amd64.exe" /VERYSILENT /CURRENTUSER
echo "set oh-my-posh executable to env and install Meslo font"
"C:\Program Files\PowerShell\7\pwsh.exe" -Command "$env:Path += ';C:\Users\WDAGUtilityAccount\AppData\Local\Programs\oh-my-posh\bin'; oh-my-posh font install Meslo"
echo "set up oh-my-posh auto start"
"C:\Program Files\PowerShell\7\pwsh.exe" -Command "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine; New-Item -Path $PROFILE -Type File -Force; Add-Content -Path $PROFILE -Value 'oh-my-posh init pwsh | Invoke-Expression'"
rundll32.exe sysdm.cpl,EditEnvironmentVariables
<!-- WINDOWS SANDBOX CONFIGURATIONS:
https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file
-->
<Configuration>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#mapped-folders -->
<MappedFolders>
<!-- USE A FOLDER FROM SYSTEM TO SHARE -->
<MappedFolder>
<HostFolder>C:\dev\sharedwithsandbox</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
<!-- ADD PORTABLE APP SHORTCUTS TO SANDBOX DESKTOP -->
<MappedFolder>
<HostFolder>C:\dev\sharedwithsandbox\ShortCuts</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
<!-- ADD CUSTOM WINDOWS TERMINAL CONFIG FOR DEFAULT-->
<MappedFolder>
<HostFolder>C:\dev\sharedwithsandbox\apps\Microsoft.WindowsTerminalPreview_1.19.3172.0_x64\terminal-1.19.3172.0\defaultSettings</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\AppData\Local\Microsoft\Windows Terminal</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#vgpu -->
<vGPU>Disable</vGPU>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#audio-input -->
<AudioInput>Enable</AudioInput>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#protected-client -->
<ProtectedClient>Enable</ProtectedClient>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#logon-command -->
<LogonCommand>
<Command>C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\dls\sandboxStartup.cmd</Command>
</LogonCommand>
</Configuration>
<!-- WINDOWS SANDBOX CONFIGURATIONS:
https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file
-->
<Configuration>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#mapped-folders -->
<MappedFolders>
<!-- USE A FOLDER FROM SYSTEM TO SHARE -->
<MappedFolder>
<HostFolder>C:\dev\sharedwithsandbox</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
<!-- ADD PORTABLE APP SHORTCUTS TO SANDBOX DESKTOP -->
<MappedFolder>
<HostFolder>C:\dev\sharedwithsandbox\ShortCuts</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\Desktop</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
<!-- ADD CUSTOM WINDOWS TERMINAL CONFIG FOR DEFAULT-->
<MappedFolder>
<HostFolder>C:\dev\sharedwithsandbox\apps\Microsoft.WindowsTerminalPreview_1.19.3172.0_x64\terminal-1.19.3172.0\defaultSettings</HostFolder>
<SandboxFolder>C:\Users\WDAGUtilityAccount\AppData\Local\Microsoft\Windows Terminal</SandboxFolder>
<ReadOnly>false</ReadOnly>
</MappedFolder>
</MappedFolders>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#vgpu -->
<vGPU>Disable</vGPU>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#audio-input -->
<AudioInput>Enable</AudioInput>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#protected-client -->
<ProtectedClient>Enable</ProtectedClient>
<!-- https://learn.microsoft.com/en-us/windows/security/application-security/application-isolation/windows-sandbox/windows-sandbox-configure-using-wsb-file#logon-command -->
<LogonCommand>
<Command>C:\Users\WDAGUtilityAccount\Desktop\sharedwithsandbox\dls\autostartSpot**y.cmd</Command>
</LogonCommand>
</Configuration>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment