1

C# スタンドアロン Windows フォーム アプリケーションがあります。これは、識別プロセスの一部としてワークステーション名を必要とするバック オフィス システムに接続します。これを取得するために Environment.MachineName を使用しています。ただし、このアプリケーションを使用している顧客は、Citrix 環境で実行する場合があり、その場合、インストール先のマシンではなく、リモート マシン名を参照する必要があります。私はこれまでにこのようなコードを書いたことがなく、Citrix にも慣れていません (そのため、すぐに始めました)。リモート マシン名を取得するにはどうすればよいですか? どんなアイデアでも大歓迎です。

よろしくお願いします。

4

1 に答える 1

5

CLIENTNAMECitrix システムでは、ユーザーが Citrix に接続しているマシンの名前を持つ環境変数が呼び出されます。これは単なる通常の Windows 環境変数であるため、使用Environment.GetEnvironmentVariableして読み取ることができます。

次のように、すばやく汚いことを行うことができます。

var workstationName = Environment.GetEnvironmentVariable("CLIENTNAME") ?? Environment.MachineName;

もう少し堅牢なものとして、Citrix 環境にSESSIONNAMEは Citrix セッションを識別する変数もあります。これら 2 つの変数が一緒に存在することは、おそらく Citrix セッションで実行するためのより良いテストです。

したがって、次のようなことができます。

public bool IsCitrixSession() {
    return Environment.GetEnvironmentVariable("CLIENTNAME") != null
        && Environment.GetEnvironmentVariable("SESSIONNAME") != null;
}

public string GetWorkstationName()
{
    return IsCitrixSession() ? Environment.GetEnvironmentVariable("CLIENTNAME")
                             : Environment.MachineName;
} 
于 2013-01-10T03:14:54.433 に答える