サービス&サポート


Windows 2000 Terminal Serverクライアントセッションで実行されるRADクライアントのコンピュータ名を決定するユーティリティ

このテクニカルノートの情報は、以下に該当します:

製品:RSView32 Active Displayタイプ:アプリケーションノート
テクニカルノートID:A1775JA
パッケージ/モジュール:Display Client英文版作成日:2001/01/25
リビジョン:6.30.16
修正リビジョン:
サブシステム: Utilities

テクニカルノート本文:

問題:
RadStationExecの以前のバージョン(v6.3.0およびそれ以前)をWindows 2000 Terminal Server (Win2K TS)クライアントセッションで実行すると、{Computername}プレイスホルダがターミナル・サーバ・コンピュータの名前だけに置換えられます。それぞれのWin2K TSクライアントセッションが、プレイスホルダを同じコンピュータ名に置換えるため、このコンピュータ名を使用してそのActive Displayクライアントインスタンスの個々のタグおよびフォルダを定義する場合に、問題が生じます。RadStationExecについては、R184JA - RADステーション(クライアント)のコンピュータ名を決定するためのユーティリティを参照してください。

解決方法:
RADStationExecおよびRSEServerアプリケーションは、Windows 2000 Terminal Serverクライアントセッションの実行を検出するように拡張されています。現在、この機能はRADStationExec v6.3.1およびRSEServer v1.2.02にあり、上述のR184というサポート・ライブラリ・ドキュメントからダウンロードできます。

Terminal Serverセッションが検出されると、デフォルトでは、{Computername}プレイスホルダテキストは、Terminal Serverのコンピュータ名、下線(_), およびそのTerminal Serverクライアントセッションのセッション番号に置換えられます。このドキュメントでは、これをSERVER_SESSIONの命名規則と呼びます。

以下に例を示します。
Win2K TSコンピュータ名はATERMSVRです。Active DisplayクライアントおよびRSEServerはクライアントセッション3で実行されています。RSEServerに対して発行されるコマンドは、"{Computername}"を"ATERMSVR_3"に置換えて、そのActive Displayクライアントのコマンドインターフェイスに送信します。

セッション番号について
TerminalクライアントがTerminal Serverに接続すると、セッション番号が割当てます。原則として、セッション番号は1から始まり、新しいセッションが接続されるたびに、番号が大きくなります。残念ながら、この番号は必ずしも連続的ではありません。セッションに割当てられる次の番号は、Terminal Serverの構成や、同時に発生している他のセッションの数によって異なります。

Terminalクライアントの接続が切断された場合、そのセッションをバックグラウンドで実行して、セッション番号を保持できます。または、そのセッションをすぐにまたは指定したタイムアウト時間後に終了して、セッション番号を他の接続に開放することもできます。Terminalクライアントが再び接続する場合、使用可能な次の番号を取得することも、前回の接続時のセッション番号の次の番号を取得することもできます。多くの部分は、Terminal Serverの構成、およびTerminal Serverへの現在の接続数に依存しています。
Terminal Serverの構成および接続については、Windows 2000 Terminal Server configuration helpを参照してください。

RSEServerの場合、これは、返されたデフォルトのSERVER_SESSION名がクライアントコンピュータに固有のセッションを識別できないことを意味します。
例: "ABC"というTerminalクライアントコンピュータがTerminal Server "ATERMSVR"に接続され、セッション番号4が割当てられます。RSEServerのデフォルトの動作では、コンピュータ名のプレイスホルダをそのActive Displayクライアントに対応する"ATERMSVR_4"に置換えます。その日の最後に、Terminalクライアントの接続が切断されて、セッションが終了します。
翌日、同じコンピュータ("ABC")がTerminal Serverに接続して、セッション1が割当てられます。コンピュータ名のプレイスホルダは、"ATERMSVR_1"に置換えられます。
この場合、"ABC"というTerminalクライアントコンピュータは、ある日はATERMSVR_4に関連づけられ、翌日はATERMSVR_1に関連付けられました。

セッションをバックグラウンドで実行して、ユーザおよびクライアントコンピュータを以前のセッションに再接続するように、Terminal Serverを構成することは可能ですが、このように構成しても、ユーザが希望する定時的な動作は行なわれません。すべてのセッションが終了して、Terminal Serverが再開しても、再接続時のセッション番号は以前と同じにならないことがあります。

あるコンピュータのターミナルクライアント接続のセッション番号が変動することはありますが、その番号はTerminal Server上で実行されている他のセッションからは独立しており、重複しません。RSEServerは各セッション内で個別に実行されるため、各セッションは{ComputerName}プレイスホルダに固有の識別子を持つことができます。

置換後のコンピュータ名を変更する
いくつかの場合、Terminal Serverクライアントセッションで実行されるアプリケーションにSERVER_SESSIONの命名規則が適用されないことがあります。{Computername}プレイスホルダの置換後文字列を変更するには、特定のパラメータを指定してRSEServerを開始する必要があります。RSEServerは、以下のいずれかの方法で開始できます。

1.Active DisplayクライアントのスタートアップマクロでAppStartコマンド(AppStart RSEServer)を発行する。
2.Windowsのスタートアップフォルダのショートカットから、あるいはクライアントセッションの開始用のコマンドまたはバッチファイルから。この場合、Active Displayクライアントの前にRSEServerが開始されます。以下の注記を参照してください。

いずれかの方法を使用して、以下のパラメータをRSEServerに追加して、"{Computername}"プレイスホルダの置換後文字列が決定されます。RSEServerがWindows 2000 Terminal Serverセッションにない場合、これらのパラメータは無視されます。

/sn= Terminalクライアントのコンピュータ名。Windows (98/NT/2000)ベースのTerminalクライアントの場合、{Computername}はTerminalクライアントソフトウェアが実行されているコンピュータの名前となります。これは、Terminal Serverの名前ではなく、Terminal Serverに接続されたクライアントのコンピュータ名です。いくつかのTerminalクライアントは、コンピュータ名としてIPアドレスを返します。このような場合、パラメータは無視されて、デフォルトのSERVER_SESSION名が返されます。

/su= Terminalクライアントのユーザ名。これは、Terminalセッションの開始時に使用されたWindows 2000のログインユーザ名です。

/sc<name>= これは、カスタム定義の名前です。<name>は、{Computername}の置換後文字列です。RSEServer via 上述の方法2を使用してRSEServerを開始する場合は、これが適切です。<name>パラメータには、英数字(A~Zおよび0~9)のみが使用可能であり、スペースは使用できません。<name>が指定されていない場合は、デフォルトのSERVER_SESSIONが使用されます。
例:/scMYCOMPと指定すると、{Computername}はMYCOMPとなります。

注記:Active Displayクライアントの前にRSEServerが開始されると、RSEServerはActive Displayクライアントへの接続を試みます。If Active Displayクライアントが指定された時間内に開始されない場合、RSEServerアプリケーションは終了します。デフォルトでは、RSEServerは接続を5secごとに5回まで試みて、Active Displayクライアントの開始用に25secのデフォルト時間を与えます。この時間が十分でない場合、以下のレジストリ設定を変更して、時間を長くすることができます。

Key: HKEY_CURRENT_USER\Software\VBおよびVBA Program Settings\RSEServer\Settings
Setting: "Connection Check Interval Rate"
Value: "5000"
これは、RSEServerがRSView32またはActive Displayクライアントへの接続を試みるmsec単位の時間間隔です。最小値が5000で、最大値が60000です。

Key: HKEY_CURRENT_USER\Software\VB and VBA Program Settings\RSEServer\Settings
Setting: "Connection Check Max Attempts"
Value: "5"
これは、RSEServerがRSView32またはActive Displayクライアントへの接続を試みる回数です。最小値が3で、最大値が10です。

RSView32プロジェクトに対する変更
Active DisplayクライアントおよびサーバとしてRadStationExecを使用している多数のプロジェクトをWin2K Terminal Serverで使用するには、若干の変更が必要です。原則として、プロジェクトがタグおよびフォルダを使用して、クライアントのTrendコントロールタグおよびローカルアイテム(最後の表示、ユーザ名など)に対して個々のストレージを提供する場合、プロジェクトはTerminal Serverクライアントセッションの命名規則に対応したタグデータベース構造を持つ必要があります。これを行なうには、クライアントからあらゆる組合せのSERVER_SESSION名フォーマットを提供できるように、プロジェクトが修正されます。SERVER_SESSIONの命名規則を使用している場合は、Terminal Serverクライアントライセンス数についてすべてのセッション番号が提供されることが重要です。上述のパラメータを指定してRSEServerが開始された場合は、タグデータベース構造にはSERVER_SESSIONの代わりに置換後の名前を格納する必要があります。

例: 別々のコンピュータ上で実行されているActive DisplayクライアントステーションでRSView32プロジェクトが表示されます。プロジェクトには、各クライアントに別々のフォルダを提供するために、SYSTEMAおよびSYSTEMBというトレンド・コントロール・タグ・フォルダがあり、ディスプレイパラメータおよびRadStationExecを介してこれらにアクセスされて、SYSTEMAおよびSYSTEMBというコンピュータ名がそれぞれ処理されます。

Terminal Serverクライアントセッションで同じRSView32プロジェクトが実行されると、プロジェクトはコネクションのセッション番号に対してトレンド・コントロール・フォルダを提供する必要があります。RSEServerは{Computername}をSERVER_SESSIONフォーマット(例: ATERMSVR_1, ATERMSVR_2, ATERMSVR_3, ..., ATERMSVR_x)に変換します。

クライアント用にタグを動的に作成する方法
Active Displayクライアントの開始時にフォルダを動的に作成する方法があります。Templateフォルダを使用してActive Displayクライアントに固有のタグを提供することにより、VBAコードを使用してこのフォルダを複製できます。Active DisplayクライアントがRSView32 Active Displayサーバに接続すると、スタートアップマクロを実行できます。このスタートアップマクロはクライアントで実行できるため、RADSTATIONEXECなどのアプリケーションがVBAEXECコマンドを発行して、クライアント名をVBAルーチンに渡すことができます。

以下のVBAサンプルは、Templateというタグフォルダを複製して、"sFolder"というパラメータに渡される名前に変更します。"sFolder"で命名されたフォルダ名が既に定義されている場合、ルーチンはこれらのタグを初期値に設定します。このルーチンは、THISPROJECTで定義されます。

Public Sub CopyTemplate (sFolder as String)
    On Error Resume Next
    Dim oTag as Tag
    Dim oTags as Tags
    If Not gTagDb.FolderExists(sFolder) Then
        ' Create the tags from the template folder tags.
        gTagDb.DuplicateFolder "Template", sFolder
    Else
        ' Reset the tags to their initial value.
        Set oTags = gTagDb.GetFolder(sFolder).Tags
        For each oTag in oTags
	    oTag.Value = oTag.InitialValue
        Next
        Set oTags = Nothing
    End If
End Sub


Active Displayクライアントのスタートアップマクロには、以下のコマンドラインが含まれます。RadStationExecアプリケーションを使用してコンピュータ名を決定して、VBAルーチンを呼出すことにより、フォルダを複製して、クライアントに必要なタグを作成します。このマクロは、Active Displayサーバがタグ作成プロセスを終了するために、1sec間停止します。その後、アプリケーションはオープンしているディスプレイグラフィックを起動して、プロジェクトで使用するためにコンピュータ名をディスプレイに渡すことができます。

Appstart RSESERVER
AppStart RadStationExec "VBAExec CopyTemplate "{Computername}""
Pause 1
AppStart RadStationExec "Display Main /T{Computername}"

プロジェクトがRadStationExecを使用して{Computername}プレイスホルダを置換して、クライアントに固有のファイル(グラフィック・アラーム・ファイルなど)の検索に使用する場合は、プロジェクトはこれらのファイル名を命名フォーマットで提供する必要があります。上述のテンプレートというコンセプトと、クライアントのスタートアップマクロから呼出される追加のVBAコードまたはルーチンにより、これらのタイプのファイルを動的に作成することもできます。

インストール
R184JA - RADステーション(クライアント)のコンピュータ名を決定するためのユーティリティに記載されたRadStationExecおよびRSEServerのインストール方法に従ってください。


法的な注意事項:
本版は、英文テクニカルノートの和訳です。英文原文を正文といたします。
ロックウェル・ソフトウェア(RSI) のKnowledgebaseに記載された情報は、いかなる保証もなく「そのままで」提供されます。RSI は、明示または暗示されたいかなる保証も負いません。また、RSI がそのような損害の可能性を忠告していた場合でも、直接、間接、偶発的、必然的な利益の損失または損害を含むいかなる損害についても、RSI は責任を負いません。
©2000 Rockwell Software Inc. All rights reserved.