Lỗi 5: Quyền truy cập bị Từ chối khi khởi động dịch vụ windows


97

Tôi gặp lỗi này khi cố gắng khởi động dịch vụ windows mà tôi đã tạo trong C #:

văn bản thay thế

Mã của tôi cho đến nay:

private ServiceHost host = null;

public RightAccessHost()
{
    InitializeComponent();
}

protected override void OnStart(string[] args)
{
    host = new ServiceHost(typeof(RightAccessWcf));
    host.Open();
}

protected override void OnStop()
{
    if (host != null)
        host.Close();
    host = null;
}

Cập nhật # 1

Tôi đã giải quyết vấn đề ở trên bằng cách cấp quyền cho tài khoản NETWORK SERVICE nhưng bây giờ tôi gặp một vấn đề khác:

văn bản thay thế

Cập nhật # 2

Không thể bắt đầu dịch vụ. System.InvalidOperationException: Dịch vụ 'RightAccessManagementWcf.RightAccessWcf' không có điểm cuối ứng dụng (không phải cơ sở hạ tầng). Điều này có thể là do không tìm thấy tệp cấu hình nào cho ứng dụng của bạn hoặc do không tìm thấy phần tử dịch vụ nào khớp với tên dịch vụ trong tệp cấu hình hoặc do không có điểm cuối nào được xác định trong phần tử dịch vụ. tại System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreNonMexEndpoints (mô tả ServiceDescription) tại System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (ServiceDescription description, ServiceHostBase serviceHost (ServiceDescription description) tại System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost (ServiceDescription description, ServiceHostBase serviceHost) at System.SostalizeModelimeerviceOvicenvice Thời gian chờ TimeSpan) tại System.ServiceModel.Channels.CommunicationObject.


2
Vấn đề thứ hai của bạn không dễ giải quyết chỉ từ tin nhắn đó. Bạn sẽ cần phải xem nhật ký sự kiện của mình và xem lỗi thực sự là gì.
Matt Ellen

1
Kiểm tra xem tài khoản Hệ thống có quyền truy cập vào thư mục hay không.
Nhà phát triển

Câu trả lời:


116

Tôi nhận ra bài đăng này đã cũ, nhưng không có giải pháp nào rõ ràng và tôi chỉ muốn trình bày cách giải quyết vấn đề này.

Error 5: Access DeniedLỗi đầu tiên đã được giải quyết bằng cách cấp quyền cho thư mục đầu ra cho NETWORK SERVICEtài khoản.

Started and then stoppedLỗi thứ hai dường như là một thông báo chung chung khi một cái gì đó làm lỗi dịch vụ. Kiểm tra Trình xem sự kiện (cụ thể là 'Nhật ký Windows> Ứng dụng') để tìm thông báo lỗi thực sự.

Trong trường hợp của tôi, đó là cài đặt cấu hình dịch vụ không hợp lệ trong app.config.


7
Tôi đã sửa đổi các quyền bằng cách điều hướng đến thư mục bằng cách sử dụng Explorer, nhấp chuột phải, Thuộc tính, Bảo mật, sau đó chỉ định các quyền chính xác cho tài khoản DỊCH VỤ MẠNG trong danh sách tên người dùng.
Justin Skiles

Trong trường hợp của tôi về "Lỗi 5", đó là Dịch vụ mạng không có quyền truy cập vào thư mục của tệp thực thi. Vì nó là để phát triển, tôi không muốn đặt các tệp vào thư mục Program File mà là một thư mục dùng chung mà tôi có thể sao chép các tệp từ máy dev. Cung cấp cho Dịch vụ Mạng các quyền Đọc / Thực thi / Danh sách phải đủ tốt.
ZZZ

5
Tôi Thêm DỊCH VỤ ĐỊA PHƯƠNG "và" DỊCH VỤ MẠNG "vào thư mục bin \ Debug của tôi và hoạt động, Cảm ơn!
Hernaldo Gonzalez

3
Chỉ cần một lưu ý cho mọi người: nếu việc thay đổi quyền không khắc phục được sự cố của bạn, hãy nhớ kiểm tra Trình xem sự kiện để tìm lỗi. Tôi đã gặp lỗi SQL hoàn toàn không liên quan khiến dịch vụ không thể khởi động nhưng vẫn cho tôi "Lỗi 5: Quyền truy cập bị từ chối." lỗi.
dtryan

Cảm ơn bạn đã ghi chú về "Trình xem sự kiện" - cùng với tôi, lỗi không liên quan "Không tìm thấy điểm cuối" nhưng được giả mạo là "Truy cập bị Từ chối (5)"
David Votrubec

26

Máy tính -> Quản lý -> Dịch vụ -> thuộc tính [dịch vụ của bạn]. Sau đó là tab có thông tin tài khoản. Chơi với các cài đặt đó, như chạy dịch vụ bằng tài khoản quản trị viên, v.v.

Điều đó đã làm nó cho tôi.

CHỈNH SỬA: Vấn đề cũng có thể là, hầu hết các dịch vụ được chạy dưới dạng LOCAL SERVICEhoặc LOCAL SYSTEMtài khoản. Bây giờ khi bạn chạy C:/my-admin-dir/service.exevới các tài khoản đó nhưng chúng không được phép thực thi bất kỳ thứ gì trong thư mục đó, bạn sẽ nhận được error 5. Vì vậy, xác định vị trí thực thi của dịch vụ, RMB cho thư mục -> Thuộc tính -> Bảo mật và đảm bảo rằng tài khoản mà dịch vụ được chạy, nằm trong danh sách người dùng được phân bổ để có toàn quyền kiểm soát thư mục.


21

Điều này đã làm việc cho tôi.

  1. Nhấp chuột phải vào thư mục cấp cao nhất chứa dịch vụ thực thi. Đi tới Thuộc tính
  2. Đi tới tab "Bảo mật"
  3. Nhấp vào "CHỈNH SỬA"
  4. Nhấp vào "THÊM"
  5. Nhập tên "HỆ THỐNG", bấm OK
  6. Đánh dấu người dùng HỆ THỐNG và nhấp vào hộp kiểm CHO PHÉP bên cạnh "Toàn quyền kiểm soát"
  7. Bấm OK hai lần

11
"HỆ THỐNG" không hoạt động với tôi, tôi chỉ đánh bạc và thử "DỊCH VỤ" - điều đó đã thực hiện được một mẹo nhỏ.
Exter

4
Thêm "DỊCH VỤ" và cho nó "Full Control" làm việc cho tôi - Windows 10
Fredrik

Vì thuộc tính Tài khoản ServiceProcessInstaller của tôi (trong ProjectInstaller của tôi) được đặt thành LocalService, tôi đã cấp đầy đủ quyền cho tài khoản Dịch vụ cục bộ và điều đó đã thành công!
Dave

14

Tôi cũng gặp lỗi tương tự, Nó được giải quyết bằng cách nhấp chuột phải vào Dịch vụ> Thuộc tính> Đăng nhập> đăng nhập với tên: Tài khoản hệ thống cục bộ.


Cảm ơn. Tôi đã gặp sự cố với tor.exe --service start, và bây giờ nó hoạt động như một sự quyến rũ!
Arman Karimi

Đã làm cho tôi. Tuy nhiên, có cách nào để chỉ định điều này theo chương trình không?
Sisir

Hiểu rồi. Nhấp chuột phải vào serviceProcessInstaller -> Thuộc tính -> Tài khoản và đặt nó thành "LocalSystem" thay vì "User" mặc định. Cài đặt dịch vụ và thì đấy.
Sisir

10

Đảm bảo các Path to executableđiểm đến một tệp thực thi thực sự (Nhấp chuột phải vào dịch vụ -> Thuộc tính -> tab Chung). Thông qua powershell (và sc.exe), bạn có thể cài đặt một dịch vụ mà không cần trỏ đến tệp thực thi thực sự ... ahem.


Tôi đã vô tình để lại ở đó một thư mục thay vì tệp .exe. Để khắc phục sự cố này, tôi đã phải "sc delete servicenameXYZ" + khởi động lại máy chủ để xóa dịch vụ hoàn toàn và cài đặt lại tệp .exe dịch vụ chính xác. Sau đó, nó bắt đầu như một cái duyên. Thanx cho bài đăng này.
Honza P.

Bạn đã cứu tôi! Đang gán thư mục, thay vì đường dẫn đầy đủ có thể thực thi ... Arghhhh! Nên đã nhìn tốt hơn ...
İlter

9

Tôi đã có giải pháp:

1. Go to local service window(where all services found)
2. Just right click on your service name: 
3. click on "properties" 
4. go to "log on" tab
5. select "local system account"
6. click "ok"

bây giờ bạn có thể thử bắt đầu dịch vụ.


1
Tôi đã chọn "Tài khoản hệ thống cục bộ" và vẫn nhận được thông báo.
user2568374

4

Trong trường hợp của tôi sau đây không được kiểm tra.

nhập mô tả hình ảnh ở đây


2
Đối với những độc giả khác như tôi: Ảnh chụp màn hình này là một phần của cửa sổ thuộc tính dịch vụ! Mở cửa sổ Dịch vụ (Run: services.msc) và chọn Thuộc tính từ menu ngữ cảnh xuất hiện sau khi nhấp chuột phải vào dịch vụ!
MohaMad

4

Tôi gặp lỗi này vì tôi đã đọc sai câu trả lời được chấp nhận từ đây: Tạo dịch vụ Windows từ tệp thực thi .

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

Đối với <path_to_service_executable>, tôi đã sử dụng con đường của thư mục của thực thi, ví dụ C:\Folder.

Nó cần phải là đường dẫn của file thực thi , ví dụ C:\Folder\Executable.exe.


3

Đối với tôi - thư mục mà dịch vụ sẽ chạy và các tệp trong đó, được mã hóa bằng tùy chọn "Mã hóa" của Windows. Loại bỏ điều đó và - thì đấy!


Điều này hóa ra là vấn đề đối với tôi - chú hề sysadmins trên máy chủ mà tôi đang sử dụng đã vặn một số núm để làm cho tất cả các thư mục có mã hóa NTFS theo mặc định và vì vậy LocalSystem thực sự không có khóa mã hóa để đọc chúng ...
KJ Tsanaktsidis

3

Lỗi này xảy ra khi có lỗi trong OnStartphương pháp của bạn . Bạn không thể mở một máy chủ trực tiếp trong OnStartphương thức vì nó sẽ không thực sự mở khi nó được gọi, mà thay vào đó nó sẽ đợi điều khiển. Vì vậy, bạn phải sử dụng một sợi. Đây là ví dụ của tôi.

public partial class Service1 : ServiceBase
{
    ServiceHost host;
    Thread hostThread;
    public Service1()
    {
        InitializeComponent();
         hostThread= new Thread(new ThreadStart(StartHosting));

    }

    protected override void OnStart(string[] args)
    {
        hostThread.Start();
    }

    protected void StartHosting()
    {
        host = new ServiceHost(typeof(WCFAuth.Service.AuthService));
        host.Open();
    }

    protected override void OnStop()
    {
        if (host != null)
            host.Close();
    }
}

3

nếu bạn đang có mã lỗi bị từ chối truy cập 5. thì có thể trong mã của bạn, dịch vụ của bạn đang cố gắng tương tác với một số tệp trong hệ thống như ghi vào tệp nhật ký

mở log ontab chọn thuộc tính dịch vụ và chọn tùy chọn để cho phép dịch vụ tương tác với màn hình, bấm cho phép dịch vụ tương tác với máy tính để bàn


3

Một trong những nguyên nhân gây ra lỗi này là không đủ quyền (Người dùng được xác thực) trong thư mục cục bộ của bạn. Để cấp quyền cho 'Người dùng đã xác thực' Mở tab bảo mật trong thuộc tính của thư mục của bạn, Chỉnh sửa và Thêm nhóm 'Người dùng đã xác thực' và Áp dụng các thay đổi.

Sau khi điều này được thực hiện, tôi có thể chạy các dịch vụ ngay cả thông qua tài khoản dịch vụ mạng (trước đó tôi chỉ có thể chạy với tài khoản hệ thống Cục bộ).


2

Tôi đã có dịch vụ cửa sổ được lưu trữ bằng OWIN và TopShelf. Tôi đã không thể bắt đầu nó. Cùng một lỗi - "Quyền truy cập bị từ chối 5"

Tôi đã kết thúc tất cả các đặc quyền cho bin / Debug của mình.

Sự cố vẫn không được giải quyết.

Vì vậy, tôi đã xem các bản ghi sự kiện và hóa ra là bản ghi Microsoft.Owin.Host.HttpListenerkhông có trong thư viện lớp chứa lớp khởi động OWIN.

Vì vậy, hãy đảm bảo rằng bạn kiểm tra nhật ký sự kiện để xác định nguyên nhân gốc rễ trước khi bắt đầu tham gia vào perms, v.v.


2
Điểm tốt - lỗi "quyền truy cập bị từ chối" có thể không liên quan gì đến quyền; luôn kiểm tra nhật ký ứng dụng trong Event Viewer.
mhenry1384

xin chào, tôi cũng đang kiểm tra vấn đề này, đâu là đường dẫn `. \ logs` Tôi đang ghi lại cái này từ giá đỡ trên cùng nhưng nó không có ở đó
biến áp

2

Trong trường hợp của tôi, tôi phải thêm 'Người dùng đã xác thực' trong danh sách 'Tên nhóm hoặc Tên người dùng' trong thư mục nơi tệp thực thi được cài đặt.


1

Mã của bạn có thể đang chạy trong ngữ cảnh bảo mật của người dùng không được phép khởi động dịch vụ.

Vì bạn đang sử dụng WCF, tôi đoán rằng bạn đang ở trong bối cảnh của DỊCH VỤ MẠNG.

xem: http://support.microsoft.com/kb/256299


1
Tôi đã cấp quyền "DỊCH VỤ ĐỊA PHƯƠNG" và "DỊCH VỤ MẠNG" trên các thư mục đầu ra của mình
Kris-I,

Bạn cũng cần đặt chính sách nhóm cho các dịch vụ hệ thống, support.microsoft.com/kb/256345/EN-US
Shiraz Bhaiji,

1

Sử dụng Tài khoản LocalSystem thay vì Tài khoản LocalService trong Trình cài đặt dịch vụ.

Bạn có thể thực hiện việc này bằng cách thay đổi chế độ xem thiết kế của trình cài đặt dịch vụ dưới đây:
Thuộc tính của Trình cài đặt quy trình dịch vụ -> Đặt tài khoản thành LocalSystem.

hoặc bằng cách thực hiện bên dưới, thay đổi trong tệp Designer.cs của trình cài đặt dịch vụ của bạn:

this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

1

Nhấp chuột phải vào servicetrong service.msc và chọnproperty .

Bạn sẽ thấy một đường dẫn thư mục dưới Path to executable như C: \ Users \ Me \ Desktop \ project \ Tor \ Tor \ tor.exe

Điều hướng đến C: \ Users \ Me \ Desktop \ project \ Tor và nhấp chuột phải vào Tor.

Chọn property, security, editvà sau đó add. Trong trường văn bản, hãy nhậpLOCAL SERVICE , bấm ok, sau đó chọn hộpFULL CONTROL

Nhấp addlại vào rồi nhập NETWORK SERVICE, nhấp vàook , chọn hộpFULL CONTROL

Sau đó nhấp vào ok (ở dưới cùng)


0

Hãy xem Process Utilities > Process monitortừ http://www.sysinternals.com .

Đây là công cụ cho phép bạn giám sát những gì một quy trình thực hiện. Nếu bạn theo dõi quá trình dịch vụ này, bạn sẽ thấy một quyền truy cập bị từ chối ở đâu đó và tài nguyên nào mà quyền truy cập bị từ chối được cấp.


0

Đối với lỗi 5, tôi đã làm ngược lại với giải pháp ở trên. "Lỗi đầu tiên 5: Lỗi bị từ chối truy cập đã được giải quyết bằng cách cấp quyền cho thư mục đầu ra cho tài khoản DỊCH VỤ MẠNG."

Tôi đã thay đổi tài khoản của mình thành tài khoản cục bộ, thay vì tài khoản dịch vụ mạng và vì tôi đã đăng nhập với tư cách quản trị viên nên nó hoạt động


0

Nếu bạn gặp lỗi này trên máy chủ, hãy thử cấp quyền truy cập vào thư mục mà bạn có exe dịch vụ windows thực. Bạn nên chuyển đến tab bảo mật và chọn Dịch vụ cục bộ với tư cách là người dùng và nên cấp toàn quyền truy cập. Bạn cũng nên làm như vậy đối với exe.


0

Tôi đã theo dõi sppsvc.exe bằng trình theo dõi quá trình và phát hiện ra rằng nó đang cố gắng ghi vào khóa HKEY_LOCAL_MACHINE \ SYSTEM \ WPA. Sau khi cấp quyền cho NETWORK SERVICE trên khóa này, tôi đã có thể khởi động dịch vụ và Windows đột nhiên nhận ra rằng nó đã được kích hoạt trở lại.


0

Tôi đã vô tình đặt dịch vụ của mình chạy vì Local servicegiải pháp là chuyển sangLocal System


0

Sau khi đập cái của tôi vào bàn của tôi trong vài giờ để cố gắng tìm ra điều này, bằng cách nào đó, phương thức "Chính" của tôi đã bị xóa mã của nó!

ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] 
{ 
    new DMTestService()
};
ServiceBase.Run(ServicesToRun);

Các giải pháp khác mà tôi tìm thấy:

  • Cập nhật .NET framework lên 4.0
  • Đảm bảo rằng tên dịch vụ bên trong InitializeComponent () khớp với thuộc tính tên dịch vụ của trình cài đặt

    private void InitializeComponent()
    ...
    this.ServiceName = "DMTestService";
  • Và một khởi động lại máy chủ tốt không ảnh hưởng gì

Szhlopp


0

Trong trường hợp có thể hệ thống hết dung lượng trống trên đĩa cục bộ.


0

Hôm nay tôi gặp sự cố này trên một dịch vụ mà tôi đang phát triển và không có đề xuất nào khác cho câu hỏi này hoạt động. Trong trường hợp của tôi, tôi đã thiếu phần phụ thuộc .dll trong thư mục nơi dịch vụ chạy từ đó.

Khi tôi thêm các phần phụ thuộc, sự cố đã biến mất.


0

Trong trường hợp của tôi, tôi giữ dự án trên máy tính để bàn và để truy cập vào máy tính, chúng ta cần thêm quyền vào thư mục, vì vậy tôi chỉ cần chuyển thư mục dự án của mình sang thư mục C: \.


0

Tôi không biết câu trả lời của mình có hợp lý với nhiều người hay không, nhưng tôi cũng phải đối mặt với cùng một vấn đề và giải pháp đơn giản đến mức khó tin. Tất cả những gì tôi phải làm là mở chương trình mà tôi đã sử dụng để chạy mã với tư cách quản trị viên. (nhấp chuột phải -> Chạy với tư cách Quản trị viên).

Đó là tất cả.


0

Như cửa sổ bật lên lỗi cho thấy điều này có liên quan đến quyền. Vì vậy, hãy chạy dịch vụ dưới dạng tài khoản "LocalSystem".

Để làm điều tương tự, Nhấp chuột phải vào serviceProcessInstaller -> Properties -> Accountvà đặt nó thành "LocalSystem"thay vì mặc định "User". Cài đặt dịch vụ và thì đấy.


Đây là một bản sửa lỗi hoạt động đã được chứng minh và không phải bất kỳ cách nào xung quanh. Có thể xuống-cử tri hãy giải thích lý do của không thích cho người khác hiểu
Sisir

0

kiểm tra nhật ký sự kiện của windows để biết thông báo lỗi chi tiết. Tôi đã giải quyết tương tự sau khi kiểm tra nhật ký sự kiện.


-1

Tôi gặp sự cố này trên một dịch vụ mà tôi đang triển khai và không có đề xuất nào khác cho câu hỏi này hoạt động. Trong trường hợp của tôi, đó là do .config (xml) của tôi không hợp lệ. Tôi đã tạo một lỗi sao chép và dán khi sao chép từ đủ điều kiện sang sản phẩm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.