All done now!
parent
a1a427ec25
commit
80f61d9b15
|
@ -381,40 +381,59 @@ function Install-WingetAutoUpdate {
|
||||||
}
|
}
|
||||||
|
|
||||||
#Security: Mods directory must be protected (Users could create scripts of their own - then they're run in System Context)!
|
#Security: Mods directory must be protected (Users could create scripts of their own - then they're run in System Context)!
|
||||||
|
#Check if Local Users have write rights in Mods directory or not
|
||||||
$directory = Get-Item -Path "$WingetUpdatePath\mods"
|
$directory = Get-Item -Path "$WingetUpdatePath\mods"
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
#Disable inheritance
|
#Local Users - S-1-5-32-545
|
||||||
$acl.SetAccessRuleProtection($True, $True)
|
|
||||||
# Remove any existing rules
|
|
||||||
$acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) }
|
|
||||||
#SYSTEM Full - S-1-5-18
|
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
|
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
|
||||||
$acl.SetAccessRule($rule)
|
|
||||||
# Save the updated ACL
|
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl | Out-Null
|
|
||||||
|
|
||||||
#Administrators Full - S-1-5-32-544
|
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
|
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
|
||||||
$acl.SetAccessRule($rule)
|
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl
|
|
||||||
|
|
||||||
#Local Users ReadAndExecute - S-1-5-32-545 S-1-5-11
|
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545")
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545")
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
#Translate SID to Locale Name
|
||||||
$acl.SetAccessRule($rule)
|
$ntAccount = $userSID.Translate([System.Security.Principal.NTAccount])
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl
|
$userName = $ntAccount.Value
|
||||||
|
$userRights = [System.Security.AccessControl.FileSystemRights]"Write"
|
||||||
|
|
||||||
|
$hasWriteAccess = $False
|
||||||
|
|
||||||
|
foreach ($access in $acl.Access) {
|
||||||
|
if ($access.IdentityReference.Value -eq $userName -and $access.FileSystemRights -eq $userRights) {
|
||||||
|
$hasWriteAccess = $True
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($hasWriteAccess) {
|
||||||
|
#Disable inheritance
|
||||||
|
$acl.SetAccessRuleProtection($True, $True)
|
||||||
|
# Remove any existing rules
|
||||||
|
$acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) }
|
||||||
|
#SYSTEM Full - S-1-5-18
|
||||||
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
|
||||||
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
# Save the updated ACL
|
||||||
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
|
||||||
#Authenticated Users ReadAndExecute - S-1-5-11
|
#Administrators Full - S-1-5-32-544
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
$acl.SetAccessRule($rule)
|
$acl.SetAccessRule($rule)
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
|
||||||
|
#Local Users ReadAndExecute - S-1-5-32-545 S-1-5-11
|
||||||
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545")
|
||||||
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
|
||||||
|
#Authenticated Users ReadAndExecute - S-1-5-11
|
||||||
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
|
||||||
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
}
|
||||||
|
|
||||||
#Create Shortcuts
|
#Create Shortcuts
|
||||||
if ($StartMenuShortcut) {
|
if ($StartMenuShortcut) {
|
||||||
if (!(Test-Path "${env:ProgramData}\Microsoft\Windows\Start Menu\Programs\Winget-AutoUpdate (WAU)")) {
|
if (!(Test-Path "${env:ProgramData}\Microsoft\Windows\Start Menu\Programs\Winget-AutoUpdate (WAU)")) {
|
||||||
|
|
|
@ -54,40 +54,59 @@ function Invoke-PostUpdateActions {
|
||||||
}
|
}
|
||||||
|
|
||||||
#Security: Mods directory must be protected (Users could create scripts of their own - then they're run in System Context)!
|
#Security: Mods directory must be protected (Users could create scripts of their own - then they're run in System Context)!
|
||||||
|
#Check if Local Users have write rights in Mods directory or not
|
||||||
$WingetUpdatePath = Get-ItemProperty $regPath -Name InstallLocation -ErrorAction SilentlyContinue
|
$WingetUpdatePath = Get-ItemProperty $regPath -Name InstallLocation -ErrorAction SilentlyContinue
|
||||||
$directory = Get-Item -Path "$WingetUpdatePath\mods"
|
$directory = Get-Item -Path "$WingetUpdatePath\mods"
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
#Disable inheritance
|
#Local Users - S-1-5-32-545
|
||||||
$acl.SetAccessRuleProtection($True, $True)
|
|
||||||
# Remove any existing rules
|
|
||||||
$acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) }
|
|
||||||
#SYSTEM Full - S-1-5-18
|
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
|
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
|
||||||
$acl.SetAccessRule($rule)
|
|
||||||
# Save the updated ACL
|
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl | Out-Null
|
|
||||||
|
|
||||||
#Administrators Full - S-1-5-32-544
|
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
|
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
|
||||||
$acl.SetAccessRule($rule)
|
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl
|
|
||||||
|
|
||||||
#Local Users ReadAndExecute - S-1-5-32-545 S-1-5-11
|
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545")
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545")
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
#Translate SID to Locale Name
|
||||||
$acl.SetAccessRule($rule)
|
$ntAccount = $userSID.Translate([System.Security.Principal.NTAccount])
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl
|
$userName = $ntAccount.Value
|
||||||
|
$userRights = [System.Security.AccessControl.FileSystemRights]"Write"
|
||||||
|
|
||||||
|
$hasWriteAccess = $False
|
||||||
|
|
||||||
|
foreach ($access in $acl.Access) {
|
||||||
|
if ($access.IdentityReference.Value -eq $userName -and $access.FileSystemRights -eq $userRights) {
|
||||||
|
$hasWriteAccess = $True
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($hasWriteAccess) {
|
||||||
|
#Disable inheritance
|
||||||
|
$acl.SetAccessRuleProtection($True, $True)
|
||||||
|
# Remove any existing rules
|
||||||
|
$acl.Access | ForEach-Object { $acl.RemoveAccessRule($_) }
|
||||||
|
#SYSTEM Full - S-1-5-18
|
||||||
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-18")
|
||||||
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
# Save the updated ACL
|
||||||
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
|
||||||
#Authenticated Users ReadAndExecute - S-1-5-11
|
#Administrators Full - S-1-5-32-544
|
||||||
$acl = Get-Acl -Path $directory.FullName
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-544")
|
||||||
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
$acl.SetAccessRule($rule)
|
$acl.SetAccessRule($rule)
|
||||||
Set-Acl -Path $directory.FullName -AclObject $acl
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
|
||||||
|
#Local Users ReadAndExecute - S-1-5-32-545 S-1-5-11
|
||||||
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-32-545")
|
||||||
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
|
||||||
|
#Authenticated Users ReadAndExecute - S-1-5-11
|
||||||
|
$acl = Get-Acl -Path $directory.FullName
|
||||||
|
$userSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-11")
|
||||||
|
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($userSID, "ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow")
|
||||||
|
$acl.SetAccessRule($rule)
|
||||||
|
Set-Acl -Path $directory.FullName -AclObject $acl
|
||||||
|
}
|
||||||
|
|
||||||
#Convert about.xml if exists (previous WAU versions) to reg
|
#Convert about.xml if exists (previous WAU versions) to reg
|
||||||
$WAUAboutPath = "$WorkingDir\config\about.xml"
|
$WAUAboutPath = "$WorkingDir\config\about.xml"
|
||||||
|
|
Loading…
Reference in New Issue