2015-12-09 22 views
-2

在Win7 64位,爲32位編譯的代碼XE2:我試圖設置AfterInstall事件中服務的配置的延遲啓動屬性。 QueryServiceConfig2讓我獲得了現有的值,但通過GetLastError調用ChangeServiceConfig2返回$ 57(壞參數)。我使用的是WinSvc中聲明的SERVICE_DELAYED_AUTO_START_INFO類型的var,但我嘗試過各種其他存儲大小的變量,但都沒有成功。在設置服務描述時,調用ChangeServiceConfig2工作正常。德爾福ChangeServiceConfig2錯誤設置延遲啓動

我在這裏錯過了什麼?

+0

請顯示您的實際'AfterInstall'代碼。錯誤$ 57('ERROR_INVALID_PARAMETER')意味着您將一個無效的輸入參數傳遞給'ChangeServiceConfig2()'。 –

+0

我不知道你如何期待我們解釋爲什麼當你沒有向你顯示你使用該函數的代碼時,你使用'QueryServiceConfig2'失敗並出現錯誤的參數錯誤。 *醫生,我的腳看起來很有趣。這通常不是那種顏色,它的形狀也不太對。我不會再提供任何細節,或者讓你看到我的腳。怎麼了,我該如何變好?* –

回答

0

謝謝,是的,顯示代碼會更好,但事實證明,它可能沒有那麼有用。今天我發現信息結構中傳遞的BOOL值只能設置爲0或1的數字值 - 任何其他值(特別是Delphi for TRUE使用的-1)都會引起$ 57的bad-param錯誤。我發現這是因爲將參數設置爲FALSE並未產生錯誤,但將其設置爲TRUE。將其更改爲一個整數並嘗試不同的值,這使我只有兩個可接受的值。這與每個其他Windows API調用都不一致,因爲我可以想到一個BOOL參數,這就是爲什麼它難倒我。無論如何,謝謝,夥計們。