From ff796ff29950bfdff4bb1da875d786955103b1ec Mon Sep 17 00:00:00 2001 From: Timmy Date: Tue, 28 Apr 2026 08:46:56 +0800 Subject: [PATCH] =?UTF-8?q?16-install-telegram=20=E8=A3=9C=E4=B8=8A=20ACL?= =?UTF-8?q?=20=E4=BF=AE=E6=AD=A3=EF=BC=9Agrant=20BUILTIN\\Users=20RX=20?= =?UTF-8?q?=E6=95=B4=E5=80=8B=20package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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。 --- steps/16-install-telegram.ps1 | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/steps/16-install-telegram.ps1 b/steps/16-install-telegram.ps1 index 86993d5..9521130 100644 --- a/steps/16-install-telegram.ps1 +++ b/steps/16-install-telegram.ps1 @@ -21,6 +21,13 @@ Section 'install-telegram' { if (-not $exe) { Log 'Telegram.exe not found after winget install'; return } Log "Telegram.exe: $exe" + # 修 ACL:winget 解 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) $lnkPath = Join-Path $env:PUBLIC 'Desktop\Telegram.lnk' $shell = New-Object -ComObject WScript.Shell