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として設定できます。