![](/img/trans.png)
[英]windows could not start service on local computer error 5 access is denied
[英]One windows service trying to start another: access denied
我在生產服務器上運行Windows服務。 非常重要的一點是,如果該服務由於任何原因而崩潰,我們必須立即恢復,因此我編寫了一個Monitor Service,其唯一的目的是繼續檢查主服務是否已啟動並正在運行,如果不是,則發出該服務。求救信號。 還應該啟動已關閉的服務...而這是無法正常工作的部分:
public static void CheckService(string checkServiceName, string myServiceName, bool restartIfStopped = false)
{
var ctl = ServiceController.GetServices()
.FirstOrDefault(s => s.ServiceName == checkServiceName);
var error = "";
if (ctl == null)
error = "{0} is not installed!".Fmt(checkServiceName);
else if (ctl.Status != ServiceControllerStatus.Running)
{
error = "{0} is in status {1}".Fmt(checkServiceName, ctl.Status);
if (restartIfStopped)
try
{
ctl.Start();
// no error = success
error += "\r\nService was automatically restarted.";
}
catch (Exception ex)
{
// send to windows application log
Log("Failed to restart service:\r\n"+ex, myServiceName, EventLogEntryType.Warning);
}
}
// other code here to send out email notifications
}
問題是,當我嘗試使用ctl.Start()
重新啟動服務時,它會在應用程序日志中出現以下錯誤而異常:
無法重啟服務:
System.InvalidOperationException:無法在計算機“。”上打開MyService服務。 ---> System.ComponentModel.Win32Exception:訪問被拒絕
兩種服務都設置為使用“網絡服務”運行。 我已經在兩個可執行文件夾上為“網絡服務”授予了完全安全權限。
還有什么可能導致這種情況?
您可以設置服務失敗的情況下重新啟動(如描述在這里 )。
看起來像是一個管理許可。
我會嘗試兩件事
將Application Manifest添加到解決方案中,有關更多詳細信息,請參見: http : //www.codeproject.com/Questions/629067/How-to-add-a-manifest-file-in-my-project
賦予手動權限
轉到c:// Program Files / ApplicationFolder / .exe右鍵單擊.exe並轉到“屬性”,然后轉到“兼容性”選項卡,並選中true以以管理員級別運行此程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.