XenAppサーバーでログイン/ログアウトスクリプトとしてac#.NETアプリケーションを実行しています。アプリケーションはユーザーコンテキストで実行され、(クライアントの)citrixレシーバーのバージョン番号とクライアントのOSおよびマシン名を取得できる必要があります。
私はCitrixAPIにかなり慣れていないので、あまり優れたドキュメントがないようです。これを実現する方法を知っている人はいますか?
XenAppサーバーのWindowsレジストリでcitrixレシーバーのバージョン番号を見つけました。
HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\Ica\Session\{SESSION_NUMBER}\Connection
ここで、{SESSION_NUMBER}は次の場所にあります。
HKEY_USERS\{SID_NUMBER}\Software\Citrix\SessionSfr
そのキーの唯一のサブキーとして、{SID_NUMBER}はXenAppセッションにログインしたユーザーのSIDです。
誰かが興味を持っているなら、私は週末にCitrix CCM SDKの周りに.NETラッパーを書き、GitHubにコードを公開しました:CcmSdk.Net
.NET Standard 2.1
古いバージョンでは利用できない新しいUTF-8マーシャリング機能が必要だったため、プロジェクトは現時点でターゲットにしています。.NET Frameworkのサポートが必要な場合は、コードを.NET Framework 4.7以降のプロジェクトにコピーして、代わりにそのビルドを使用できます。
CitrixWorkspaceはCitrixReceiverを分離しており、ここで説明するレジストリ方法はCitrix Workspaceのクライアントバージョンを見つけるのに機能しないと思いますが、クライアントの多くがまだ古いCitrix Receiverを使用しているため、それでも非常に役立ちました。