1

Windows 2008 R2 64 ビット サーバーで実行している PowerBuilder 12.1 アプリケーションがあります。このアプリケーションを新しい XenApp Citrix 環境で実行しようとしています。PB アプリの起動時にユーザーのプロファイルが存在しない場合、プロファイルの作成が開始されます。これにより、あらゆる種類のディレクトリとサブディレクトリが作成されます。理由がわからない。しかし、プロファイルが完了する前に爆発し、実行が中止されます。ユーザーがプロファイルなしで最初にワードパッドを実行すると、プロファイルが正しく作成されます。プロファイルが作成されると、問題なく PB アプリを起動できます。PB アプリのメイン プログラムの 2 行目にポップアップ ダイアログを配置し、プロファイルがなく実行が中止された場合、ポップアップは呼び出されません。ワードパッドと同様にプロファイルが作成されると、PB アプリが起動され、

誰かがこのような行動を見たことがありますか? 何が原因なのかわからず、Citrix サーバーにアクセスできず、Tech Services グループによって管理されています。彼らは、問題は PB アプリに違いないと言っています。私はちょっと確信が持てません。この問題のトラブルシューティング方法に関するアイデアをいただければ幸いです。PB アプリは Citrix で実行できるはずですよね? この種の環境での PB アプリの起動プロセスがどのようなものかはわかりませんが、実行はメイン プログラムで開始されると思います。これは正しいです?

事前に、Bill44077 に感謝します。

4

1 に答える 1

0

権限が原因で Citrix にユーザー プロファイルを保持できない場合、これはうまく機能し、Web ベースのアプリまたは n 層アプリ (サーバー側) に使用できます。

システムにデータベース テーブルを追加して、 PB プロファイル機能をシミュレートします。

新しいテーブル:

// citrix_user_profile (new table pseudo-code)
// 
// id = identity, not null
// userid = type of userid in your DB, not null
// filename = char, not null
// section = char, not null
// key = char, not null
// value = char null

1.新しいカスタム非ビジュアル ユーザー オブジェクトを作成します: n_user_profile

2.次のようなインスタンス変数を追加します。

protected:

// todo: write a setter and getter
boolean ib_use_windows_profile = false

constant int FAIL = -1
constant int SUCCESS = 1

3.次のように定義された関数を追加します。

int = of_setprofilestring(string as_filename, string as_section, string as_key, string as_value)

次のようにコード化されました:

// If windows profile use PB standard function,
// otherwise use citrix user profile logic

If this.ib_use_windows_profile Then

    Return SetProfileString(as_filename, as_section, as_key, as_value)

Else

    // Pseudo-Code
    //
    // Does an entry exist in the database for this user, filename, section, key?
    // Yes: Update the table with the new value
    // No: Insert entry to the table with values

    Return this.SUCCESS  // success or fail

End If

4.次のような関数を追加します。

string = of_profilestring(string as_filename, string as_section, string as_key, string as_default)

次のようにコーディングします。

// If windows profile use PB standard function,
// otherwise use citrix user profile logic
// if you don't have access to user info then
// add it to the argument list.

If this.ib_use_windows_profile Then

    Return ProfileString(as_filename, as_section, as_key, as_default)

Else

    // Pseudo-Code
    //
    // Does an entry exist in the database for this user, filename, section, key?
    // Yes: Return the 'value' from DB
    // No: Return the default value passed via parameter

    Return as_default // or value from database

End If

5.新しい非ビジュアルを使用し、セッターを呼び出して Windows プロファイル インスタンス変数を設定し、PB 標準プロファイル関数の代わりに新しい関数を使用します。

于 2017-09-20T01:33:51.737 に答える