如果您由于权限而无法在 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.使用新的非可视化,调用你的setter来设置windows配置文件实例变量,然后使用你的新函数代替PB标准配置文件函数。