権限が原因で 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 標準プロファイル関数の代わりに新しい関数を使用します。