【问题标题】:Is there is a way to fetch private contacts of all the users using the Notes C API?有没有办法使用 Notes C API 获取所有用户的私人联系人?
【发布时间】:2020-03-03 11:36:44
【问题描述】:

有没有办法使用 Notes C API 获取所有用户的私人联系人?

假设多米诺服务器中有以下用户, 1. UserA(管理员用户) 2.用户B 3.用户C

我使用 Notes C API 来获取用户名下的联系人。 ProcessFormula("SELECT Form=Person", &FormulaHandle); 之后使用 NSFSearch 提取联系人。

当我尝试拉取 UserA、UserB、UserC 的联系人时 UserA 的所有联系人都被拉取,但 UserB 和 UserC 的私人联系人没有被拉取。

是否有任何 Notes API 可以使用 UserA(admin) 访问权限获取所有用户(UserB 和 UserC(在用户下标记为私人))的私人联系人?

【问题讨论】:

    标签: lotus-notes lotus-domino


    【解决方案1】:

    第一件事:服务器上的代码读取数据库显然无法读取仅存在于用户本地通讯簿副本中的任何内容,并且用户可以创建永远不会存储在服务器上的联系人。

    但是,如果它存在于服务器上,您的代码可能需要以完全访问管理员权限运行才能读取受 ReaderNames 字段保护的数据。你还没有说你的代码是如何运行的。如果它实际上在数据库所在的同一台服务器上作为服务器任务运行,则可能只是您如何打开数据库的问题。如果它在其他地方运行,则必须为其运行的 id 文件授予完全访问权限,并且用户(您?)必须在运行代码之前为当前会话激活这些权限。我会向您介绍描述完全访问管理功能的帮助页面,但由于 IBM/HCL 转换,现在很难找到在线帮助页面版本的可靠链接。

    【讨论】:

    • 在 MyContacts 和 $Contacts 视图中存在用户的私人联系人(联系人存储在 .nsf 文件中)。对于我已授予“完全访问权限管理员”的用户,来自 Domino Admin->Configuration 选项卡-> 安全选项卡-> 完全访问管理员字段。授予“完全访问管理员”权限后,我使用具有完全访问管理员权限的用户登录 Lotus Notes 客户端。从当前会话中,我尝试打开其他用户的邮件文件,我即使我使用具有完全访问管理员权限的用户登录,我也无法看到其他用户的私人联系人。
    • 使用 nsfopendb 函数打开用户数据库,DBHANDLE Con​​tactsDB = 0 使用 NSFDbOpen("CN=Domino/O=oraginzation!!mail\\test", &ContactsDB); 打开用户数据库。从 Lotus Notes 客户端本身,在创建联系人时使用标记私人复选框标记为私人的联系人仅对特定用户管理员可见,也无法查看这些联系人
    • 每次使用“管理”->“完全访问管理”打开 Domino 管理时,我都可以在当前会话中启用“完全访问管理”。使用该会话,我可以通过打开可用的打开邮件文件选项来查看所有用户的私人联系人。但是我怎样才能在 Lotus Notes 客户端中做同样的事情呢?
    • 我不知道有任何 API 可以启用完全访问管理。我怀疑他们没有发布一个,因为他们不希望工具能够默默地使用它。他们希望用户始终知道他们正在启用它。
    • 如果您可以将代码编写为服务器任务而不是用户程序,我怀疑您需要做的就是删除“CN=Domino/O=oraginzation!!”从您的 NSFDbOpen 调用中的参数,以便以“本地”模式打开文件,这会绕过安全性,除非在 NSF 文件的属性中启用了“强制一致 ACL”属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2011-07-24
    相关资源
    最近更新 更多