13

cmd からサービスのパスワードを設定したい。私はオプションを得ました

sc.exe config "サービス名" obj= "ドメイン\ユーザー" パスワード= "パスワード"

実行すると、「[SC] ChangeServiceConfig SUCCESS」が表示 され、サービスを開始すると取得されます

「Windows は、ローカル コンピューターで service1 サービスを開始できませんでした。エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。」

以下のリンクを検索して取得しました SC.exeを使用してサービス資格情報パスワードを設定できません

パスワードに特殊文字が含まれていません。

それを行うオプションは何ですか?

4

4 に答える 4

5

最初に確認することは、そのユーザーがそのマシンでサービスとしてログオンする権限を持っているかどうかです。彼がそうする場合 (そして、これを確認するために次の手順を実行できます)、サービスに移動します (スタート メニュー - 引用符なしで「サービス」と入力します)。リストでサービスを見つけて、右クリックします。[プロパティ] を選択し、[ログオン] タブに移動します。「パスワード」と「パスワードの確認」を再入力してください。[OK] をクリックします。ユーザーがサービスとしてログオンする権限を持っている場合、「アカウント YourDomain\YourUser にはサービスとしてログオンする権限が付与されています」というメッセージが表示されます。サービスをもう一度開始してみてください。動作します。

ユーザーがこの種のアクセス許可を持っていない場合は、次の 2 つの方法のいずれかを使用できます。

1) [スタート] メニュー - 引用符なしで「ローカル セキュリティ ポリシー」と入力します。「ローカル ポリシー」を開き、「ユーザー権利の割り当て」を左クリックします。右側のパネルで、[サービスとしてログオン] を右クリックし、[プロパティ] を選択します。[ユーザーまたはグループの追加] をクリックして、ユーザーを追加します。[OK] をクリックします。マシンを再起動する必要がある場合があります。

2) 「Windows Server 2003 リソース キット ツール」( http://www.microsoft.com/en-us/download/confirmation.aspx?id=17657 ) をダウンロードしてインストールします。コマンド プロンプトを開き、次のように入力します。

ntrights +r SeServiceLogonRight -u MyDomain\MyUser -m \\%COMPUTERNAME%

コンピューターを再起動し、サービスを再度開始してみてください。

ユーザーに Log On As A Service 権限が付与されたら、コマンド ラインからサービスを作成および開始できます。

于 2015-08-19T17:38:55.770 に答える
3

The account YourDomain\YourUser has been granted the Log On As a Service rightに直面した場合は、powershell スクリプト リンクAddLogonasaServiceを実行する必要が あります。これはパスワードとは関係ありません。ユーザーがサービスを実行する権利/許可です。

参照用にコードを埋め込んでいます。そのURLも参照できます。

param($accountToAdd)
 #written by Ingo Karstein, http://blog.karstein-consulting.com
 #  v1.0, 01/03/2014

 ## <--- Configure here

 if( [string]::IsNullOrEmpty($accountToAdd) ) {
    Write-Host "no account specified"
    exit
 }

 ## ---> End of Config

 $sidstr = $null
 try {
    $ntprincipal = new-object System.Security.Principal.NTAccount "$accountToAdd"
    $sid = $ntprincipal.Translate([System.Security.Principal.SecurityIdentifier])
    $sidstr = $sid.Value.ToString()
 } catch {
    $sidstr = $null
 }

 Write-Host "Account: $($accountToAdd)" -ForegroundColor DarkCyan

 if( [string]::IsNullOrEmpty($sidstr) ) {
    Write-Host "Account not found!" -ForegroundColor Red
    exit -1
 }

 Write-Host "Account SID: $($sidstr)" -ForegroundColor DarkCyan

 $tmp = [System.IO.Path]::GetTempFileName()

 Write-Host "Export current Local Security Policy" -ForegroundColor DarkCyan
 secedit.exe /export /cfg "$($tmp)" 

 $c = Get-Content -Path $tmp 

 $currentSetting = ""

 foreach($s in $c) {
    if( $s -like "SeServiceLogonRight*") {
        $x = $s.split("=",[System.StringSplitOptions]::RemoveEmptyEntries)
        $currentSetting = $x[1].Trim()
    }
 }

 if( $currentSetting -notlike "*$($sidstr)*" ) {
    Write-Host "Modify Setting ""Logon as a Service""" -ForegroundColor DarkCyan

    if( [string]::IsNullOrEmpty($currentSetting) ) {
        $currentSetting = "*$($sidstr)"
    } else {
        $currentSetting = "*$($sidstr),$($currentSetting)"
    }

    Write-Host "$currentSetting"

    $outfile = @"
 [Unicode]
 Unicode=yes
 [Version]
 signature="`$CHICAGO`$"
 Revision=1
 [Privilege Rights]
 SeServiceLogonRight = $($currentSetting)
 "@

    $tmp2 = [System.IO.Path]::GetTempFileName()


    Write-Host "Import new settings to Local Security Policy" -ForegroundColor DarkCyan
    $outfile | Set-Content -Path $tmp2 -Encoding Unicode -Force

    #notepad.exe $tmp2
    Push-Location (Split-Path $tmp2)

    try {
        secedit.exe /configure /db "secedit.sdb" /cfg "$($tmp2)" /areas USER_RIGHTS 
        #write-host "secedit.exe /configure /db ""secedit.sdb"" /cfg ""$($tmp2)"" /areas USER_RIGHTS "
    } finally { 
        Pop-Location
    }
 } else {
    Write-Host "NO ACTIONS REQUIRED! Account already in ""Logon as a Service""" -ForegroundColor DarkCyan
 }

 Write-Host "Done." -ForegroundColor DarkCyan

サービスの ID を設定するために、vbscript を使用しました

Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where Name = 'Servicename'")
For Each objservice in colServiceList   
errReturn = objService.Change( , , , , , ,WScript.Arguments.Item(0),   WScript.Arguments.Item(1)) 
objService.StartService()   
Next

WScript.Arguments.Item(0) はユーザー名 arg で、WScript.Arguments.Item(1) はパスワードです。

于 2015-10-10T20:35:47.913 に答える
-1

これは私のために働いた:

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>"

要するに 、パスワードを設定する前にサービスを停止すると、開始が正常に機能します。

于 2014-03-23T17:02:06.527 に答える