16-install-telegram 補上 ACL 修正:grant BUILTIN\\Users RX 整個 package

winget 解 portable zip 時,'Telegram\' 內層目錄會 break ACL inheritance,
只剩 Admin/Administrators/SYSTEM,BUILTIN\\Users 沒進去。
即使把 User 加進 Administrators 群組,UAC 雙擊用標準 token 跑時仍被擋,
彈出「無法存取此捷徑所參照的項目,沒有適當的權限」。

修法:winget 裝完之後 icacls /grant BUILTIN\\Users RX 整個 package 目錄樹。
Chrome 沒這個問題(自家 installer 自己處理 ACL),所以只要修 Telegram。
This commit is contained in:
2026-04-28 08:46:56 +08:00
parent 8fdce82737
commit ff796ff299

View File

@@ -21,6 +21,13 @@ Section 'install-telegram' {
if (-not $exe) { Log 'Telegram.exe not found after winget install'; return } if (-not $exe) { Log 'Telegram.exe not found after winget install'; return }
Log "Telegram.exe: $exe" Log "Telegram.exe: $exe"
# 修 ACLwinget 解 portable zip 時 'Telegram\' 內層目錄會 break inherit
# 只剩 Admin/Administrators/SYSTEM標準 token 的 User 雙擊會「沒有適當的權限」。
# 強制 grant BUILTIN\Users (S-1-5-32-545) RX 在整個 package 目錄(含子物件)。
$pkgDir = (Get-Item $exe).Directory.Parent.FullName
& icacls.exe $pkgDir '/grant' '*S-1-5-32-545:(OI)(CI)RX' '/T' '/C' 2>&1 |
Select-Object -Last 1 | ForEach-Object { Log " icacls: $_" }
# Public Desktop 捷徑C:\Users\Public\Desktop\Telegram.lnk # Public Desktop 捷徑C:\Users\Public\Desktop\Telegram.lnk
$lnkPath = Join-Path $env:PUBLIC 'Desktop\Telegram.lnk' $lnkPath = Join-Path $env:PUBLIC 'Desktop\Telegram.lnk'
$shell = New-Object -ComObject WScript.Shell $shell = New-Object -ComObject WScript.Shell