1234567891011121314151617181920212223242526272829303132333435 |
- # This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint
- # See also https://github.com/cryptomator/cryptomator/pull/2654.
- #
- # TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed
- #
- #Requires -RunAsAdministrator
- #Get all active, local user profiles
- $profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
- Get-ChildItem $profileList | ForEach-Object {
- $profilePath = $_.GetValue("ProfileImagePath")
- $settingsPath = "$profilePath\AppData\Roaming\Cryptomator\settings.json"
- if(!(Test-Path -Path $settingsPath -PathType Leaf)) {
- #No settings file, nothing to do.
- return;
- }
- $settings = Get-Content -Path $settingsPath | ConvertFrom-Json
- if($settings.preferredVolumeImpl -ne "FUSE") {
- #Fuse not used, nothing to do
- return;
- }
- #check if customMountPoints are used
- $atLeastOneCustomPath = $false;
- foreach ($vault in $settings.directories){
- $atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True")
- }
- #if so, use WinFsp Local Drive
- if( $atLeastOneCustomPath ) {
- Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty
- $newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl"
- ConvertTo-Json $newSettings | Set-Content -Path $settingsPath
- }
- }
|