Người dùng gặp thông báo lỗi 1053 với nội dung 'Dịch vụ không phản hồi yêu cầu khởi động hoặc điều khiển kịp thời'. Lỗi này do timeout xảy ra sau khi yêu cầu khởi động dịch vụ được gửi nhưng dịch vụ không phản hồi trong khung thời gian quy định.

Có nhiều biến thể của thông báo lỗi từ vấn đề dịch vụ Windows đến dịch vụ tùy chỉnh không thể khởi chạy (kể cả game và phần mềm bên thứ ba). Chúng tôi cũng gặp trường hợp các lập trình viên gặp vấn đề này khi phát triển phần mềm tùy chỉnh. Ở đây, chúng ta sẽ đi qua tất cả biến thể lỗi và thảo luận cách giải quyết vấn đề một lần cho tất.
Nguyên nhân gây ra Lỗi 1053 trên Windows
Sau khi nhận báo cáo ban đầu, chúng tôi bắt đầu điều tra và nhìn sâu vào tất cả mô-đun liên quan đến cơ chế khởi động dịch vụ. Sau khi thu thập kết quả và đồng bộ với phản hồi người dùng, kết luận sự cố xảy ra do một số lý do khác nhau. Dưới đây là một số nguyên nhân:
- Cài đặt Timeout: Windows mặc định có cài đặt timeout, nếu ứng dụng không đáp ứng, buộc chúng phải abort và đóng. Nếu dịch vụ bạn cố gắng khởi chạy mất quá lâu để phản hồi, nó sẽ bị kill. Ở đây, chúng ta có thể thay đổi cài đặt timeout bằng cách thao tác registry.
- Thiếu file DLL: Một trường hợp khác của lỗi xảy ra khi thiếu file DLL trên máy tính được nhiều ứng dụng khác sử dụng. Nếu file DLL này xung đột hoặc không hề có, bạn sẽ gặp thông báo lỗi.
- File hệ thống hỏng/thiếu: Một lý do khác là file hệ thống hỏng hoặc thiếu. Nếu cài đặt Windows không đúng và có vấn đề, bạn sẽ gặp nhiều vấn đề bao gồm lỗi đang thảo luận.
- Windows cũ: Microsoft chính thức công nhận lỗi này trên trang web chính thức và từng phát hành hotfix tạm thời. Tuy nhiên, gần đây họ gỡ hotfix và hướng dẫn người dùng nâng cấp lên phiên bản Windows mới nhất.
- Sử dụng bản Debug (cho Developers): Nếu bạn cố gắng khởi chạy dịch vụ trong bản Debug của Windows, bạn có thể gặp lỗi này. Bản Debug không ổn định và không có tất cả chức năng chạy như bản Release.
- Thiếu Framework (cho Developers): Không tương thích Framework cũng gây ra lỗi. Máy chạy dịch vụ và dịch vụ của bạn phải trên cùng framework.
- Vấn đề dịch vụ DB (cho Developers): Một trường hợp khác gặp lỗi này là vấn đề cấu hình dự án. Chi tiết máy chủ phải chính xác để dịch vụ không gặp vấn đề truy cập.
- Cài đặt hỏng: Một trường hợp phổ biến khác là cài đặt ứng dụng (yêu cầu dịch vụ) bị hỏng. Cài đặt lại giúp ở đây.
- Cấu hình mạng xấu: Dịch vụ liên tục giao tiếp với mạng. Nếu cấu hình mạng không tốt, dịch vụ có thể không thực hiện nhiệm vụ và gây ra lỗi.
- Quyền quản trị: Dịch vụ bạn cố gắng khởi chạy (hoặc bên thứ ba cố gắng) nên chạy với quyền quản trị nếu nó tiêu thụ tài nguyên hệ thống không dành cho dùng bình thường.
Trước khi chuyển sang giải pháp, hãy đảm bảo bạn đăng nhập với quyền quản trị và có kết nối internet hoạt động. Cũng làm theo giải pháp từ đầu và làm việc xuống dần.
Sửa file hỏng
Tải và chạy Restoro để quét và khôi phục file hỏng/thiếu từ đây. Sau khi xong, tiếp tục các giải pháp dưới đây.
Giải pháp 1: Thay đổi cài đặt Timeout qua Registry
Điều đầu tiên nên thử là thay đổi cài đặt timeout của dịch vụ qua registry editor. Khi dịch vụ được yêu cầu khởi chạy, một bộ hẹn giờ bắt đầu với giá trị định sẵn. Nếu dịch vụ không khởi động trong khung thời gian này, thông báo lỗi sẽ báo cáo. Ở đây, chúng ta sẽ điều hướng đến registry máy tính và thay đổi giá trị. Nếu không có, tạo khóa mới.
- Nhấn Windows + R, gõ "regedit" trong hộp thoại và nhấn Enter.
- Trong registry editor, điều hướng đến đường dẫn file sau:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
- Tìm khóa 'ServicesPipeTimeout'. Nếu đã có, chuyển trực tiếp đến chỉnh sửa. Nếu không tìm thấy, chọn Control, nhấp chuột phải vào khoảng trống bất kỳ ở bên phải màn hình và chọn Mới > DWORD

- Đặt tên khóa là 'ServicesPipeTimeout' và đặt giá trị là 180000 (Bạn cũng có thể nhấp chuột phải vào giá trị và nhấp Sửa đổi (Modify) nếu tùy chọn đặt giá trị không xuất hiện.

- Lưu thay đổi và thoát. Khởi động lại máy tính hoàn toàn và thử khởi chạy dịch vụ. Kiểm tra xem sự cố có được giải quyết không.
Giải pháp 2: Kiểm tra hỏng file hệ thống
Điều khác cần thử trước khi chuyển sang phương pháp nâng cao hơn là kiểm tra hệ thống có hỏng hay không. Nếu Windows thiếu file và hỏng, nó có thể khiến một số mô-đun quan trọng không hoạt động. Kết quả, bạn sẽ gặp lỗi 1053. Ở giải pháp này, chúng ta sẽ dùng System File Checker của Windows kiểm tra toàn bộ cấu trúc file hệ thống và so sánh với bản sao mới trực tuyến. Nếu có sự khác biệt, file sẽ được thay thế tương ứng.
- Nhấn Windows + S, gõ "command prompt" trong hộp thoại, nhấp chuột phải vào ứng dụng và chọn Chạy với quyền quản trị (Run as administrator).
- Trong command prompt nâng cao, thực hiện các lệnh sau lần lượt và đảm bảo chúng hoàn thành:
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth

- Lệnh sau sửa các vấn đề mà system file checker chẩn đoán khi chạy quét. Khởi động lại máy tính hoàn toàn sau khi chạy lệnh và kiểm tra xem sự cố có được giải quyết hoàn toàn không.
Giải pháp 3: Cài đặt lại ứng dụng (nếu áp dụng)
Một phương pháp hữu ích khác để loại bỏ lỗi 1053 là cài đặt lại ứng dụng yêu cầu dịch vụ. Thông thường, ứng dụng bên thứ ba cài từ nguồn ngoài (trừ Microsoft Store) có thể thiếu hoặc có thành phần cũ yêu cầu dịch vụ nào đó trong Windows.
Ở đây, bạn có thể điều hướng đến trang web chính thức và tải phiên bản mới của ứng dụng. Sau khi gỡ phiên bản hiện tại, bạn có thể cài đặt lại. Dưới đây là cách gỡ ứng dụng trong Windows.
- Nhấn Windows + R, gõ "appwiz.cpl" trong hộp thoại và nhấn Enter.
- Trong trình quản lý ứng dụng, tìm ứng dụng, nhấp chuột phải và chọn Gỡ cài đặt (Uninstall).

- Khởi động lại máy tính và tiến hành cài đặt lại.
Giải pháp 4: Đặt lại Cache và Cấu hình Mạng
Nếu bạn dùng dịch vụ kết nối internet và làm việc ở đó, khuyến nghị kiểm tra xem tất cả socket và cấu hình mạng khác có nguyên vẹn và không gây vấn đề. Nếu chúng gây vấn đề, dịch vụ có thể không kết nối internet để thực hiện nhiệm vụ và gây khó khăn.
Ở giải pháp này, chúng ta sẽ điều hướng đến command prompt với quyền quản trị và đặt lại cấu hình mạng từ đó. Nếu thành công, thông báo lỗi sẽ bị loại bỏ.
Lưu ý: Điều này sẽ xóa tất cả cài đặt tùy chỉnh bạn đã thiết lập thủ công.
- Nhấn Windows + R, gõ "command prompt" trong hộp thoại, nhấp chuột phải ứng dụng và chọn "Chạy với quyền quản trị (Run as administrator)".
- Trong command prompt nâng cao, thực hiện các lệnh sau lần lượt:
netsh winsock reset ipconfig /renew

- Sau khi đặt lại mạng, đảm bảo bạn có truy cập internet bằng cách kiểm tra qua trình duyệt và xem sự cố có được giải quyết không.
Giải pháp 5: Lấy quyền sở hữu ứng dụng
Một trường hợp hiếm chúng tôi gặp là không có quyền sở hữu ứng dụng khiến ứng dụng không thực thi dịch vụ đúng cách. Điều này hợp lý vì nếu ứng dụng không có đủ quyền truy cập nâng cao, nó sẽ không thể gửi/đọc phản hồi đến/từ dịch vụ (đặc biệt nếu là dịch vụ hệ thống). Ở bài này, chúng ta sẽ điều hướng đến file thực thi của ứng dụng và thay đổi quyền sở hữu thành tên người dùng của chúng ta. Nếu thành công, điều này sẽ giải quyết vấn đề lỗi 1053.
- Tìm file/thư mục ứng dụng. Nhấp chuột phải và chọn Thuộc tính (Properties).
- Điều hướng đến tab "Bảo mật (Security)" và nhấp vào "Nâng cao (Advanced)" ở gần cuối màn hình như hình dưới.

- Nhấp vào nút "Thay đổi (Change)" ở màn hình trước. Nó sẽ nằm ngay trước giá trị chủ sở hữu. Ở đây chúng ta sẽ thay đổi chủ sở hữu thư mục từ giá trị mặc định thành tài khoản máy tính của bạn.

- Bây giờ nhập tên tài khoản người dùng của bạn vào khoảng trống và nhấp vào "Kiểm tra tên (Check Names)". Windows sẽ tự động liệt kê tất cả tài khoản khớp với tên này.

Nếu không tìm thấy tên tài khoản bằng phương pháp này, bạn có thể thử chọn thủ công từ danh sách nhóm người dùng có sẵn. Nhấp vào "Nâng cao" và khi cửa sổ mới xuất hiện, nhấp vào "Tìm ngay (Find Now)". Danh sách sẽ được điền ở dưới màn hình bao gồm tất cả nhóm người dùng trên máy tính. Chọn tài khoản của bạn và nhấn "OK". Khi quay lại cửa sổ nhỏ, nhấn "OK" lại.

- Bây giờ chọn dòng "Thay thế chủ sở hữu trên các container và đối tượng con (Replace owner on sub containers and objects)". Điều này đảm bảo tất cả thư mục/file bên trong cũng thay đổi quyền sở hữu. Cách này bạn không phải lặp lại quy trình cho các thư mục con. Ngoài ra, chúng tôi cũng khuyến nghị bật tùy chọn "Thay thế tất cả mục nhập quyền của đối tượng con bằng mục nhập quyền có thể kế thừa từ đối tượng này (Replace all child object permission entries with inheritable permission entries from this object)".
- Đóng cửa sổ Thuộc tính sau khi nhấp "Áp dụng (Apply)" và mở lại sau đó. Điều hướng đến tab bảo mật (security) và nhấp "Nâng cao (Advanced)".
- Trên cửa sổ quyền限, nhấp vào "Thêm (Add)" ở gần cuối màn hình.

- Nhấp vào "Chọn chủ thể (Select a principal)". Cửa sổ tương tự sẽ bật lên như bước 4. Lặp lại bước 4 khi nó xuất hiện. Bây giờ chọn tất cả quyền (cho full control) và nhấn "OK".
- Chọn dòng "Thay thế tất cả mục nhập quyền của đối tượng con bằng mục nhập quyền có thể kế thừa từ đối tượng này (Replace all child object permission entries with inheritable permission entries from this object)" và nhấn Apply.
- Đóng file và khởi động lại máy tính hoàn toàn. Bây giờ, thử khởi chạy ứng dụng và kiểm tra xem sự cố có được giải quyết hoàn toàn không.
Giải pháp 6: Cập nhật Windows lên bản mới nhất
Điều khác cần thử là kiểm tra xem bạn đã cài đặt phiên bản Windows cập nhật trên máy tính hay chưa. Microsoft phát hành cập nhật để nhắm đến thay đổi mới trong OS và hỗ trợ tính năng bổ sung. Một số cập nhật mang tính 'quan trọng' và phải cài đặt càng sớm càng tốt. Nếu bất kỳ cập nhật 'quan trọng' nào chưa cài đặt, bạn sẽ gặp sự cố.
- Nhấn Windows + S để mở thanh tìm kiếm, ghi Cập nhật (Update) trong hộp thoại và mở cài đặt Cập nhật.

- Trong cài đặt cập nhật, nhấp vào Kiểm tra cập nhật (Check for updates). Máy tính sẽ kết nối máy chủ Microsoft và xem có cập nhật nào không. Nếu đã có cập nhật được đánh dấu, thực hiện ngay lập tức.
Mẹo bổ sung cho Developers
Nếu bạn là nhà phát triển và cố gắng khởi chạy dịch vụ trong Windows, có hàng trăm kỹ thuật cần làm chính xác để spawn và nhận phản hồi từ dịch vụ. Ở giải pháp bổ sung này, chúng ta sẽ liệt kê một số nguyên nhân phổ biến nhất của Lỗi 1053 trong thế giới phát triển và giải pháp của chúng.
- Đảm bảo .NET Frameworks đồng bộ: Nếu ứng dụng/dịch vụ bạn cố gắng khởi chạy trên Framework khác với máy chủ, bạn sẽ gặp sự cố. Hãy đảm bảo các framework đồng bộ.
- Sử dụng bản Release Build: Developers thường dùng bản Debug để test dịch vụ và hoạt động. Tuy nhiên, lưu ý không chạy dịch vụ trong Release build gây ra một số vấn đề.
- Để debug khởi động dịch vụ (để hiểu sâu hơn), chèn mã dưới đây ở đầu phương thức OnStart() của dịch vụ:
while(!System.Diagnostics.Debugger.IsAttached) Thread.Sleep(100);
Điều này sẽ dừng dịch vụ để bạn nhanh chóng gắn debugger Visual Studio qua Debug > Attach
- Sao chép release DLL hoặc lấy file DLL từ release mode thay vì Debug mode và dán vào thư mục cài đặt. Điều này sẽ giải quyết vấn đề nếu liên quan đến file DLL.
- Đảm bảo cơ sở dữ liệu (database) mà dịch vụ/ứng dụng truy cập được cấu hình đúng. Nếu có vấn đề với chính cơ sở dữ liệu (hoặc bất kỳ thông tin xác thực nào), bạn sẽ gặp thông báo lỗi. Thực hành tốt là kiểm tra tất cả mô-đun một lần nữa và đảm bảo tất cả tham số và biến được thiết lập đúng.