📝

Windowsサービスからの共有フォルダーへのアクセス

2023/11/14に公開

Windowsサービスからの共有フォルダーへのアクセス

Windowsのサービスから共有フォルダーへアクセスする必要があり、その時の備忘録です。

調査

アクセスするユーザーで「資格情報マネージャー コントロール パネル」の「Windows 資格情報」に登録すれば良いことがわかった。

問題

Windowsサービスの実行ユーザーは規定では「LocalSystem」ユーザーなので、ログインして「Windows 資格情報」を登録することはできない。

アクセス先

共有フォルダーパス:\share.example.com\share

対応

以下の手順で対応した。

  1. SysinternalsのPsToolsをダウンロードし、適当に解凍する。
  2. Windows資格権限をコマンドラインから追加するため、PowerShellを管理者権限で立ち上げ、 Install-Module -Name CredentialManagerを実行して資格権限のモジュールをインストールする。
  3. 以下を実行して、「LocalSystem」ユーザーでPowerShellコンソールを立ち上げる。
    PsExec.exe -accepteula -u "NT AUTHORITY\System" -i -s powershell.exe
  4. 以下のコマンドを実行して「Windows 資格情報」に共有フォルダーへアクセスするユーザーとパスワードを登録する。
    New-StoredCredential -Target "share.example.com" -UserName "user@example.com" -Password "password" -Persist Enterprise -Type DomainPassword

※参考
https://help.symphonysummitai.com/docs/windows-credential-manager-for-local-system-account

Discussion