2008-09-24 57 views
2

我試圖以用戶身份啓動服務,並且事情工作正常,直到我嘗試沒有密碼的用戶。然後,它無法啓動(由於登錄錯誤)。以無密碼的用戶身份啓動服務

我做錯了什麼或者這是「按設計」?

代碼註冊該服務:

SC_HANDLE schService = CreateService( 
     schSCManager,   
     strNameNoSpaces,  
     strServiceName,   
     SERVICE_ALL_ACCESS,  
     SERVICE_WIN32_OWN_PROCESS, 
     SERVICE_AUTO_START,  
     SERVICE_ERROR_NORMAL,  
     szPath,     
     NULL,      
     NULL,     
     NULL,      
     strUser, 
     (strPassword.IsEmpty())?NULL:strPassword); 

回答

2

這可能是由於操作系統安全要求或安全策略。檢查安全策略,看看有沒有什麼相關的。

+0

這幾乎是一個香草XP安裝。我簡單地看了一下策略,但沒有發現任何相關的內容,至少我沒有發現任何與服務和登錄和密碼有關的事情。 – dennisV 2008-09-25 00:49:14

0

你需要的,如果沒有密碼,指定一個空字符串,而不是NULL。 NULL不是一個有效的空字符串,「」是。可能你應該通過strPassword作爲最後一個參數。

SC_HANDLE schService = CreateService( 
      schSCManager,   
      strNameNoSpaces,  
      strServiceName,   
      SERVICE_ALL_ACCESS,  
      SERVICE_WIN32_OWN_PROCESS, 
      SERVICE_AUTO_START,  
      SERVICE_ERROR_NORMAL,  
      szPath,     
      NULL,      
      NULL,     
      NULL,      
      strUser, 

// change this line to: 
      strPassword.IsEmpty() ? L"" : strPassword); 
// or maybe 
      strPassword); 
+0

謝謝 - 即使我手動啓動服務,它也不起作用。也許別的地方有什麼錯? – dennisV 2008-09-25 00:18:33

0

謝謝 - 我已經試過,其實第一次,但無濟於事。

如果我啓動services.msc,手動進入服務屬性並清除2個密碼字段,然後按「應用」並嘗試啓動它,它也失敗。

2

是的,這確實與安全策略有關。爲了詳細說明:

http://technet.microsoft.com/en-us/library/bb457114.aspx

「如果你想禁用伐木行爲限制到網絡上無密碼,您可以通過本地安全策略做控制空白密碼的限制可以修改的策略設置。使用本地安全策略或組策略MMC管理單元您可以使用以下任一工具找到此策略選項安全設置\本地策略\安全選項。策略名稱爲帳戶:限制本地帳戶使用空白控制檯登錄密碼只有,默認啓用。「

禁用後,它一切正常。

相關問題