瀏覽代碼

closes #1932, closes #1931

Armin Schrenk 3 年之前
父節點
當前提交
eee672f9ee
共有 1 個文件被更改,包括 55 次插入10 次删除
  1. 55 10
      dist/win/contrib/patchWebDAV.ps1

+ 55 - 10
dist/win/contrib/patchWebDAV.ps1

@@ -1,16 +1,61 @@
 #Requires -RunAsAdministrator
 
-$sysdir = [Environment]::SystemDirectory
-$hostsFile = "$sysdir\drivers\etc\hosts"
-$aliasLine = '127.0.0.1 cryptomator-vault'
-
-foreach ($line in Get-Content $hostsFile) {
-	if ($line -eq $aliasLine){
-		Write-Output 'No changes necessary'
-        exit 0
+# Adds for address 127.0.0.1 the 'cryptomator-vault' alias to the hosts file
+function Add-AliasToHost {
+    $sysdir = [Environment]::SystemDirectory
+    $hostsFile = "$sysdir\drivers\etc\hosts"
+    $aliasLine = '127.0.0.1 cryptomator-vault'
+
+    foreach ($line in Get-Content $hostsFile) {
+        if ($line -eq $aliasLine){
+            return
+        }
     }
+
+    Add-Content -Path $hostsFile -Encoding ascii -Value "`r`n$aliasLine"
+}
+
+
+# Sets in the registry the webclient file size limit to the maximum value
+function Set-WebDAVFileSizeLimit {
+    # Set variables to indicate value and key to set
+    $RegistryPath = 'HKLM:\SYSTEM\CurrentControlSet\Services\WebClient\Parameters'
+    $Name         = 'FileSizeLimitInBytes'
+    $Value        = '0xffffffff'
+
+    # Create the key if it does not exist
+    If (-NOT (Test-Path $RegistryPath)) {
+        New-Item -Path $RegistryPath -Force | Out-Null
+    }
+
+    # Now set the value
+    New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType DWORD -Force | Out-Null
+}
+
+
+# Changes the network provider order such that the builtin Windows webclient is always first
+function Edit-ProviderOrder {
+    $RegistryPath    = 'HKLM:\SYSTEM\CurrentControlSet\Control\NetworkProvider\HwOrder'
+    $Name            = 'ProviderOrder'
+    $WebClientString = 'webclient'
+
+    $CurrentOrder =  (Get-ItemProperty $RegistryPath $Name).$Name
+
+    $OrderWithoutWebclientArray = $CurrentOrder -split ',' | Where-Object {$_ -ne $WebClientString}
+    $WebClientArray = @($WebClientString)
+
+    $UpdatedOrder = ($WebClientArray + $OrderWithoutWebclientArray) -join ","
+    New-ItemProperty -Path $RegistryPath -Name $Name -Value $UpdatedOrder -PropertyType String -Force | Out-Null
 }
 
-Add-Content -Path $hostsFile -Encoding ascii -Value "`r`n$aliasLine"
-Write-Output 'Added alias to hosts file'
+
+Add-AliasToHost
+Write-Output 'Ensured alias exists in hosts file'
+
+Set-WebDAVFileSizeLimit
+Write-Output 'Set WebDAV file size limit'
+
+Edit-ProviderOrder
+Write-Output 'Ensured correct provider order'
+
 exit 0