Windowsサービスを実行する(ローカル)ユーザーを作成しています。NETWORK SERVICE、LOCAL SERVICE、またはLOCAL SYSTEMを使用したくない理由があります。
経由でユーザーを作成しますnet user foobar "Abcd123!" /add
-これは正常に動作します。
この時点でc:\users\foobar
は、存在しません。
場合、私は、ユーザーのホームディレクトリを作成し、ユーザーのいずれかのログに(または、それ以上適宜)、またはユーザーが起動するためのものであることをサービスする前に、Windowsは隣と呼ばれるユーザー・プロファイルを作成するc:\users\foobar-{gibberish/SID/whatever}
-これは、予測可能な名前ではありません。
ユーザーのホームディレクトリには、.ssh
ディレクトリのようなものを含める必要があります.gitconfig
。a-そのようなツール(これらのツールに限定されない)は、それを使用する人であると仮定するため、ユーザー設定は内部にあり~/...
ます。通常、Unixの遺産からのツール。
実際の質問
だから-ローカルユーザーのユーザープロファイルを作成するようにWindowsに指示するためのプログラム的な(できればPowerShellまたはすぐに使えるコマンドライン)方法はありますか?
または、他の回避策はありますか?
まだ試したことがないこと:
- アンNSSMは/ことを、ユーザープロファイルディレクトリに別の場所からファイルをコピーすることを事前にフックを開始うまくいけばのおかげで、この時点で存在しているWindowsのサービスを開始するが、その後、起動前にフックを実行しているラッパーNSSMに渡す制御をユーザー・プロファイルを作成します。
- サービスのUSERPROFILE環境変数を実際のユーザープロファイルディレクトリ以外の場所に設定します。これは危険なほどゲレンデから外れているように感じますが、うまくいくかもしれません。
その他のコンテキスト:
- Windows Server 2016、デスクトップエクスペリエンス。
- Core / Nanoは使用できません。
- プレイ中のアクティブディレクトリはありません。ありません。
- これらはローカルユーザーです。
- これは、Windowsの内部でPowerShellを使用しているAnsibleを介して実行しています。具体的には、Ansible 2.7.5のwin_userモジュール。
C:\users\default
(に相当する/etc/skel
)を作成したくないのは、いくつかの異なるサービスユーザーがいて、1つのサイズではすべてに対応できないためです。これは、ユーザープロファイルが作成されるタイミングにも影響せず、作成されるときにユーザープロファイルに何が含まれるかだけに影響します。- NSSMを使用してサービスを管理しています。
試したこと
- サービスを開始し、Windowsがディレクトリを作成できるようにする
- サービスを開始する前に秘密が必要なので、これを行いたくないので、画像ベーキングプロセス内でこれを行う場合、それらをクリーンアップする必要があり、またサービスがしないことを確認する必要がありますベーキング段階での作業。私はそれらの厄介なビットの両方を避けたいです。
net user
があるかどうかをチェックしましたか(例:/HOMEDIR
または/PROFILEPATH
)?。をご覧くださいnet user /help
。私の(テストされていない)理解から、ユーザーのディレクトリを作成し、これを/HOMEDIR
スイッチでhomedirとして設定できます。