この質問は過去に行われたことがありますが、満足のいく回答は得られていません。
SCコマンドを使用して、サービスの資格情報を構成しています。
SC.exe config "SERVICE NAME" obj= "domain\user" password= "password"
これは正常に完了しますが、サービスを開始すると、ログインを実行できません。
[NET START "service name"
]
services.mscからパスワードのみを手動で更新すると、サービスを開始すると正常に機能します。
この変更を更新するサーバーは数百台あり、展開の途中で発生するため、手動による介入はオプションではありません。
Configを使用してログインアカウントを更新してから、パスワードの別のconfigコマンドを使用してみました。
すべてのアカウントから、SC.exe
はパスワードでは機能せず、Microsoftは何の助けもありません。
アイデア?
サービスを停止する 変更を加える前、および ユーザーにサービスとしてログオンする権限を付与する の他に、type= own
パラメーターも追加する必要がありました。失敗する:
[SC] ChangeServiceConfig FAILED 87:
The parameter is incorrect
したがって、これは機能したコマンドです。
SC.EXE config "ServiceName" type= own obj= "domain\user" password= "password"
パスワードが二重角かっこで囲まれている場合は、パスワードの特殊文字でも機能します。
サービスプロパティウィンドウから通常のルートを介して特定のアカウントで実行するようにサービスを構成すると、アカウントにサービスとしてのログイン権が自動的に付与されます。 sc.exeを使用する場合は、ユーザーにサービスとしてのログオン権も付与する必要があります。
サービスを再起動する前に、サービスとしてログオンするためのアクセス許可をユーザーに付与する必要があります。残念ながら、デフォルトのWindowsツールを使用してコマンドラインから実行する方法はありませんが、Windows Server 2003リソースキットツールから小さな追加のutilntright.exeを使用できます。
からダウンロード https://www.Microsoft.com/en-us/download/details.aspx?id=17657
インストール後、C:\ Program Files(x86)\ Windows Resource Kits\Tools(または32ビットマシンのProgram Files)に多くのツールがあります。
ntrights.exeが必要です。それをコピーして、別のホストの任意の場所から実行できます。
ユーザーに必要な権限を付与するには、スクリプトに次のものを追加する必要があります。
ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%"
その後、新しいユーザーでサービスを正常に再開できます。また、リモートホストでntrights.exeを実行するオプションがあります。
ntrights.exe +r SeServiceLogonRight -u "%DOMAIN%\%USER%" -m %HOSTNAME%
このツールは、多くのホストをリモートで再構成する必要がある場合に非常に役立ちます。
私がこれを書いたスクリプトを介してサービスとしてログオンを有効にするには、それをそのまま使用するか、あなたに役立つものを引き出すことができます
https://raw.githubusercontent.com/cdaf/windows/master/automation/provisioning/setServiceLogon.ps1
これを試して。スタートメニュー-引用符なしで「ローカルセキュリティポリシー」と入力します。 「ローカルポリシー」を開き、「ユーザー権利の割り当て」を左クリックします。右側のパネルで、[サービスとしてログオン]を右クリックし、[プロパティ]を選択します。 「ユーザーまたはグループの追加」をクリックして、ユーザーを追加します。 [OK]をクリックします。マシンを再起動する必要があるかもしれません。
追加後、cmdでサービスのユーザー名とパスワードを設定できます。
パスワードを設定する前に、サービスを停止してみてください。
sc.exe stop "<my_service>" 4:4:3
sc.exe config "<my_service>" obj= "\.<local_acc_name>" password= "<local_acc_pass>"
sc.exe start "<my_service>"
この問題が発生しました。元の投稿に対するSTのコメントのおかげで、パスワードの入力方法を調査する必要があることに気付きました。私の場合、パーセント記号を2倍にする必要がありました(%%
)パスワードで。
STが提供するリンクは役に立ちます: cmdでの特殊文字のエスケープ 。
Powershellスクリプトを実行しているときにこの問題に対処します。私の場合の問題は、パスワードの特殊文字でした。
パスワードを二重引用符で囲んだ変数に格納することで、機能するようになりました。
$servicePassword = "`"passwordWithSpecialCharacters`"" cmd /c sc config myService obj= mydomain\myuser password= $servicePassword
特殊文字は次のとおりです。
()'"$><^?