Nếu một thiết bị Windows không nhận hoặc áp dụng các bản cập nhật Firefox như mong đợi, hãy sử dụng các bước kiểm tra sau để giúp xác định nguyên nhân. Trước khi bạn bắt đầu, hãy đảm bảo rằng các chính sách cập nhật Firefox của tổ chức bạn được định cấu hình như dự kiến.
Để biết thông tin chung về quản lý các bản cập nhật, hãy xem Quản lý các bản cập nhật Firefox.
Mục lục…
- 1 Kiểm tra các khóa registry của Chính sách Nhóm (GPO) cục bộ
- 2 Kiểm tra phiên bản Firefox đã cài đặt
- 3 Kiểm tra tác vụ đã lên lịch
- 4 Kiểm tra Dịch vụ Bảo trì Mozilla
- 5 Lời nhắc UAC yêu cầu thông tin đăng nhập của quản trị viên trong quá trình cập nhật
- 6 Kiểm tra các lần truyền BITS (Background Intelligent Transfer Service)
- 7 Liệt kê các tệp liên quan đến Firefox trong C:\ProgramData
- 8 Các bài viết liên quan
Nếu một máy trạm không nhận được các bản cập nhật Firefox, các bước kiểm tra PowerShell sau đây có thể giúp xác định nguyên nhân gốc rễ.
Kiểm tra các khóa registry của Chính sách Nhóm (GPO) cục bộ
Chạy lệnh sau:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Mozilla\Firefox" |
Select-Object DisableAppUpdate, AppAutoUpdate
Các giá trị mong đợi:
| Giá trị registry | Giá trị mong đợi |
|---|---|
DisableAppUpdate
| 0 |
AppAutoUpdate
| 1 |
Nếu các giá trị này không được đặt như mong đợi, các bản cập nhật Firefox có thể đã bị vô hiệu hóa bởi Chính sách Nhóm cục bộ hoặc miền.
Kiểm tra phiên bản Firefox đã cài đặt
Chạy lệnh PowerShell sau:
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" |
Where-Object { $_.PSChildName -like "Mozilla Firefox*" } |
ForEach-Object {
Get-ItemProperty $_.PsPath |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate
}
So sánh phiên bản đã cài đặt với phiên bản Firefox ESR mới nhất có trên trang web của Mozilla.
Kiểm tra tác vụ đã lên lịch
Firefox dựa vào một tác vụ nền đã lên lịch để tải xuống và áp dụng các bản cập nhật.
Chạy lệnh PowerShell sau:
Get-ScheduledTask |
Where-Object { $_.TaskName -like "*Firefox Background Update*" } |
ForEach-Object { Get-ScheduledTaskInfo $_ }
-> Đảm bảo rằng:
- Tác vụ tồn tại
- Tác vụ được bật
- Tác vụ chạy thành công không có lỗi
Kiểm tra Dịch vụ Bảo trì Mozilla
Trên Windows, các bản cập nhật Firefox có thể yêu cầu Dịch vụ Bảo trì Mozilla (Mozilla Maintenance Service) được cài đặt và đang chạy. Dịch vụ này cho phép Firefox áp dụng các bản cập nhật mà không cần quyền quản trị.
Kiểm tra xem dịch vụ có tồn tại không và trạng thái của nó
Chạy lệnh PowerShell sau:
Get-Service -Name MozillaMaintenance -ErrorAction SilentlyContinue |
Select-Object Name, DisplayName, Status, StartType
-> Hành vi mong đợi:
- Dịch vụ tồn tại
- Trạng thái là
Running(hoặcStopped, nhưng có thể khởi động) -
StartTypeđược đặt thànhAutomatichoặcManual - Nếu dịch vụ bị thiếu, Firefox có thể không tự động áp dụng các bản cập nhật.
Khởi động dịch vụ theo cách thủ công (nếu cần)
Nếu dịch vụ tồn tại nhưng không chạy, hãy thử khởi động nó. Chạy lệnh PowerShell sau:
Start-Service -Name MozillaMaintenance
Kiểm tra lại xem dịch vụ có khởi động mà không có lỗi không.
Cài đặt lại Dịch vụ Bảo trì Mozilla
Nếu dịch vụ bị thiếu hoặc bị hỏng, nó có thể được cài đặt lại bằng trình cài đặt Firefox:
- Tải xuống trình cài đặt Firefox phù hợp với việc triển khai của bạn (ESR hoặc bản phát hành tiêu chuẩn).
- Chạy trình cài đặt với tư cách Quản trị viên.
- Đảm bảo rằng Install Mozilla Maintenance Service được chọn.
Sau khi cài đặt, hãy kiểm tra lại trạng thái dịch vụ.
Lời nhắc UAC yêu cầu thông tin đăng nhập của quản trị viên trong quá trình cập nhật
Trên một số máy trạm, một bản cập nhật sẽ kích hoạt lời nhắc UAC có tiêu đề Firefox Updater Software yêu cầu thông tin đăng nhập của quản trị viên, mặc dù Dịch vụ Bảo trì Mozilla đã được cài đặt và hoạt động tốt. Người dùng tiêu chuẩn không thể hoàn tất bản cập nhật và lời nhắc xuất hiện lại mỗi khi khởi chạy Firefox.
Nguyên nhân
Trước khi sử dụng Dịch vụ Bảo trì, trình cập nhật Firefox sẽ kiểm tra cấu hình UAC của máy trạm (kiểm tra IsUnpromptedElevation trong mã nguồn của trình cập nhật). Nếu UAC được định cấu hình để nâng quyền trong im lặng, Firefox sẽ cho rằng việc nâng quyền sẽ diễn ra mà không có bất kỳ lời nhắc nào — như đối với quản trị viên — và bỏ qua Dịch vụ Bảo trì. Nhưng nếu người dùng đã đăng nhập không thực sự là quản trị viên, việc nâng quyền sẽ không diễn ra trong im lặng và thay vào đó, Windows sẽ hiển thị lời nhắc thông tin đăng nhập UAC.
Điều này chỉ xảy ra khi cả ba điều kiện sau được đáp ứng:
-
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ConsentPromptBehaviorAdminđược đặt thành0(tùy chọn bảo mật User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode = Elevate without prompting; mặc định của Windows là5) -
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktopđược đặt thành0(tùy chọn bảo mật User Account Control: Switch to the secure desktop when prompting for elevation = Disabled; mặc định của Windows là1) - Người dùng đã đăng nhập có mã thông báo được lọc UAC: thành viên của một nhóm đặc quyền (Administrators, Backup Operators, Power Users, v.v.), bao gồm các nhóm được đánh dấu deny-only, hoặc người nắm giữ các đặc quyền nhạy cảm (chẳng hạn như
SeBackupPrivilegehoặcSeDebugPrivilege) được cấp thông qua Chính sách Nhóm. Lưu ý rằng việc lọc dựa trên đặc quyền không hiển thị trongwhoami /groups.
Chẩn đoán
Kiểm tra nhật ký trình cập nhật để tìm chữ ký sau:
Get-Content "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\updates\0\update.log"
...
After checking IsUnpromptedElevation, useService=false
Elevating via a UAC prompt
Writing status to file: failed: 9
...
Dòng useService=false sau khi kiểm tra IsUnpromptedElevation xác nhận nguyên nhân này (lỗi 9 có nghĩa là người dùng đã hủy lời nhắc UAC). Lưu ý: sau lần thất bại đầu tiên, các nhật ký tiếp theo hiển thị useService=false từ dòng đầu tiên, không có các dòng After checking... (trạng thái còn lại, xem Giải pháp).
Sau đó, kiểm tra các giá trị UAC và trạng thái cập nhật đang chờ xử lý:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop
Get-Content "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\updates\0\update.status"
Các giá trị update.status có thể có:
| Giá trị | Ý nghĩa |
|---|---|
pending-service
| Bản cập nhật đã được tải xuống, Dịch vụ Bảo trì sẽ được sử dụng (bình thường) |
pending
| Firefox đã từ bỏ Dịch vụ Bảo trì cho bản cập nhật này (trạng thái còn lại sau khi thất bại) |
applied-service
| Bản cập nhật được áp dụng thành công thông qua Dịch vụ Bảo trì |
Giải pháp
- Đóng Firefox.
- Chạy các lệnh sau trong PowerShell với quyền nâng cao:
- Khôi phục hành vi nhắc nâng quyền UAC mặc định cho quản trị viên
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 5 /f
- Bật lại màn hình nền an toàn cho các lời nhắc nâng quyền
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 1 /f
- Xóa trạng thái cập nhật còn lại (nếu không, lời nhắc sẽ xuất hiện lần cuối)
Remove-Item "C:\ProgramData\Mozilla-1de4eec8-1241-4177-a864-e594e8d1fb38\updates\*\*" -Recurse -Force
- Khôi phục hành vi nhắc nâng quyền UAC mặc định cho quản trị viên
- Khởi động Firefox, đi tới Trợ giúp > Giới thiệu về Firefox và đợi Khởi động lại để cập nhật Firefox.
- Khởi động lại Firefox: bản cập nhật phải được áp dụng mà không có bất kỳ lời nhắc UAC nào.
-> Lưu ý:
- Khôi phục một trong hai giá trị UAC là đủ để phá vỡ điều kiện lỗi; khôi phục cả hai sẽ đưa máy trạm trở lại cài đặt mặc định của Windows.
- Nếu các giá trị UAC này được thực thi bởi Chính sách Nhóm miền, chúng sẽ được đặt lại ở lần làm mới chính sách tiếp theo (kiểm tra bằng
gpupdate /force) — khi đó, bản sửa lỗi phải được áp dụng ở cấp GPO. - Ngoài ra, việc xóa người dùng khỏi nhóm đặc quyền (sau đó đăng xuất và đăng nhập lại) cũng giải quyết được sự cố.
Xác minh
Sau khi cập nhật, update.log mới chứa After checking IsUnpromptedElevation, useService=true và update.status hiển thị applied-service.
Kiểm tra các lần truyền BITS (Background Intelligent Transfer Service)
Firefox sử dụng BITS để tải xuống các bản cập nhật trong nền.
Chạy lệnh PowerShell sau:
Get-BitsTransfer |
Where-Object { $_.DisplayName -match 'mozilla' -or $_.RemoteName -match 'mozilla' } |
ForEach-Object {
$job = $_
foreach ($file in $job.FileList) {
[PSCustomObject]@{
DisplayName = $job.DisplayName
JobState = $job.JobState
BytesTransferredMB = [math]::Round($file.BytesTransferred / 1MB, 2)
BytesRemainingMB = [math]::Round(($file.BytesTotal - $file.BytesTransferred) / 1MB, 2)
ProgressPercent = if ($file.BytesTotal -gt 0) {
[math]::Round(($file.BytesTransferred / $file.BytesTotal * 100), 2)
} else { 0 }
RemoteURL = $file.RemoteName
LocalPath = $file.LocalName
}
}
}
-> Cần kiểm tra gì
- JobState hiển thị trạng thái truyền hiện tại (đang truyền, bị tạm dừng, đã hoàn thành hoặc lỗi).
- ProgressPercent cho biết tiến trình tải xuống.
- RemoteURL hiển thị URL được Firefox sử dụng để truy xuất bản cập nhật.
-> Nếu quá trình tải xuống bị chặn
Nếu tiến trình không tiến triển hoặc công việc không thành công, hãy xác minh rằng URL hiển thị trong RemoteURL không bị chặn bởi mạng, tường lửa hoặc proxy của bạn.
Để xác nhận, hãy sao chép và dán URL vào trình duyệt và kiểm tra xem quá trình tải xuống có bắt đầu thành công hay không.
Liệt kê các tệp liên quan đến Firefox trong C:\ProgramData
Các tệp cập nhật Firefox được tải xuống và lưu trữ ở vị trí sau.
Chạy lệnh PowerShell sau:
Get-ChildItem -Path "C:\ProgramData\Mozilla-*" -Recurse |
Select-Object @{ Name="Path"; Expression={$_.FullName} },
@{ Name="Type"; Expression={ if ($_.PSIsContainer) { "Directory" } else { "File" } } },
@{ Name="Size"; Expression={$_.Length} },
@{ Name="LastModified"; Expression={$_.LastWriteTime}
}
Điều này giúp xác minh xem các tệp cập nhật đã được tải xuống chưa và xác định các tệp không hoàn chỉnh hoặc bị đình trệ.