ChangeServiceConfig問題のログオン資格情報の設定
-
03-07-2019 - |
質問
この奇妙な問題があります-新しくインストールされたサービスで ChangeServiceConfig
を呼び出して(私は CreateService
で)ログオン資格情報を提供しますが、関数は成功し(TRUEを返します)、サービスを開始しようとすると、1069(ログオン失敗)で失敗します。サービスマネージャーに移動し、資格情報を手動で変更すると(ユーザー名は正しいことはわかりますが、もちろんパスワードは見えません)、すべて問題なく、問題なく起動します。
呼び出し自体は簡単です:
ChangeServiceConfig(hService、SERVICE_NO_CHANGE、SERVICE_NO_CHANGE、SERVICE_NO_CHANGE、NULL、NULL、NULL、NULL、strUser、strPassword、NULL);
どこに目を向けるべきか、何が間違っている可能性があるかについてのアイデア
事前に感謝します。
解決
ユーザーアカウントには明示的にサービスとしてログオンする権限が必要です( SeServiceLogonRight
)。コンピューター管理者を含む多くのユーザーは、このフラグが設定されていない場合があり、手動で設定する必要があります。 Windowsサービスコントロールパネルは、実際にこれを使用してサービスを構成するときに、これをバックグラウンドで静かに実行します。
ユーザー名を完全に修飾する必要があるという漠然とした霧のような思い出もあります。 DOMAIN \ Username
形式である必要があります-ローカルアカウントの場合は、。\ Username
を指定するか、マシン名を見つけて MACHINENAME \ Usernameを使用する必要があります