GetWindowsDirectoryのドキュメントには次のように書かれています。
- TS対応アプリケーションは、実際のWindowsディレクトリを取得します。
- TSに対応していないアプリケーションは、現在のユーザーの「プライベート」Windowsディレクトリを取得します。
したがって、TS対応である必要があるC#クラスライブラリに取り組んでいます。このライブラリを使用するすべてのアプリがTS対応である必要はないためです。C#のデフォルトはTS対応です。
TS対応ではないレガシーアプリと通信するには、INIファイルをWindowsディレクトリにドロップする必要があります。これは通常のユーザーでは問題なく機能しますが、ターミナルサービスセッションでは機能しません。
ターミナルサービスの下:
- レガシーアプリは、ユーザーの「プライベート」WindowsディレクトリにあるINIファイルを使用します。
- C#ライブラリは、システムのWindowsディレクトリにあるINIファイルを使用します。
する必要がある:
- ターミナルサービスで実行しているときに検出します。
SystemInformation.TerminalServerSession
フラグをチェックすることでこれを行うことができます。 - TS対応プロセスから、ユーザーの「プライベート」Windowsディレクトリを見つけます。これを行う方法を説明しているドキュメントが見つかりません。