有没有办法使用替代应用程序来限制Notes / Domino数据上的CRUD操作?

时间:2018-07-10 06:38:55

标签: excel-vba dll com lotus-notes

我们有一个(超级)用户,他一直在Excel电子表格中使用VBA来创建和操作Domino数据库应用程序中的文档。 用户具有对应用程序的“编辑者”访问权限,通常应能够创建/编辑文档内容。 但是,他们一直在使用VBA创建文档。该逻辑不考虑诸如读者,作者等重要文档字段。

我们想限制对所有Domino数据的访问,以便只能使用IBM Notes客户端创建/修改它。

我尝试查看ECL,但这仅限制了“其他”的操作。 由于他具有可用的Notes客户端,因此外部逻辑将使用其普通的Notes凭证。

我尝试使用Notes客户端设置隐藏字段,并在表单设计的QuerySave事件中查找该字段。 不幸的是,尽管缺少字段,外部代码也没有注意表单事件,并且执行保存操作。

类似地,数据库脚本与外部逻辑的执行无关。 我打算在数据库打开时检查客户端版本,并根据版本的差异限制活动(我希望如此!)。

我已经在用户安全偏好设置中取消选择了“不提示输入密码...”选项,但这根本没有任何效果(值得怀疑!)。

我唯一能建议的就是隐藏数据库设计……这实际上只是在阻止用户理解底层设计的努力。 但这不会阻止他们以虚构的形式创建成千上万的文档并将应用程序弄得一团糟。

我希望那里找不到我想要的解决方案。

已指示用户将来不要进行此类活动。 我们很幸运,实际上并没有任何恶意意图-我们被告知“只是想提高效率”。 该活动的影响已得到纠正,并已警告用户。

我想知道的是...如何防止这种情况再次发生?

我知道这种情况很少见,但是我会认为有一种方法可以限制用于管理Notes / Domino数据的平台。 有没有一种方法可以确保没有外部应用程序能够访问,创建或修改Notes数据库文档?

我目前专注于通过COM访问Notes。 我以为,如果我从注册表中注销了“ nlsxbe.dll”,那将阻止此类活动-事实并非如此。 我还尝试从Notes可执行文件文件夹中删除.TLB文件-删除'notes32.tlb'和'domobj.tlb'完全没有效果。删除'ltsci3.tlb'将一切拧紧(如预期!​​)。

我真的没有运气-任何/所有建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

我不知道有什么方法可以检测到连接是由独立代码(而非Notes客户端)建立的,但是您确实有两个可用的路径:

  • 一个Domino服务器加载项,如果不满足某些条件,它可以防止将文档保存在该特定数据库中。
  • 被触发在该特定数据库中不久after documents are saved or modified运行的代理。代理代码可以删除(或修改,如果您愿意)不符合要求标准的文档。

服务器附加路由通常需要使用C进行编码,但是由于有了Open NTF Trigger Happy项目,最困难的部分已为您完成,其余部分可以用LotusScript或Java代理代码填充。由预先编写的C代码“触发”。您将需要对Notes Extension Manager interface的工作原理有一些基本的了解,但是一旦您了解了这些,并编写了代理代码来执行数据一致性/完整性要求,唯一的障碍就是您是否愿意托管开源代码在您的服务器上。