我运行以下代码并获取输入密码的对话框。
LNNotesSession session;
LNDatabase db;
LNSetThrowAllErrors(TRUE);
LNFormArray forms;
LNIDFile idfile;
LNCertifier cert;
LNDatetime expired;
try {
session.Init();
session.GetDatabase("names.nsf", &db, "ipanema");
db.Open();
db.GetForms(&forms);
for (int i = 0; i < forms.GetCount(); i++) {
LNForm form = forms[i];
form.Open();
LNString name = form.GetName();
form.Close();
}
db.Close();
session.Term();
} catch(LNSTATUS error) {
char errorBuf[LN_ERROR_MESSAGE_LENGTH];
LNGetErrorMessage(error, errorBuf);
MessageBox(NULL, errorBuf, "Lotus Notes Errors", MB_OK);
}
如何通过代码而非手动输入密码?
答案 0 :(得分:1)
nextpwd选项可以提供帮助。描述here。
答案 1 :(得分:0)
我过去使用过其他几个选项:一个是为了运行该代码而创建一个ID,并在没有密码的情况下创建它。然后我使用其他安全手段来保护该ID文件。
另一个选项是启用客户端单点登录并在登录的Windows用户和Notes用户之间同步密码。 应在这种情况下工作,但我只是用它来绕过Notes客户端本身的提示。
答案 2 :(得分:0)
答案取决于具体情况。
如果代码在用户工作站上运行,并且您不希望在用户登录Notes时出现密码提示,但您确实希望在用户未登录时显示密码提示在,然后在Notes客户端中有一个内置选项。在Notes 8.x中,它位于“用户安全性”对话框中,选项标签为“不提示输入其他基于Notes的程序的密码”。此选项后面有一个小标签,表示“降低了安全性”,但所有绕过密码提示的可能方法都可以做到这一点。
如果代码在用户工作站上运行,并且代码仅在用户实际登录到窗口时运行,那么肯的第二个建议可能是合适的。问题是,Notes客户端的单点登录功能通常不会根据具体情况激活,并且您的组织的安全性,Domino和Windows管理员必须参与其中。
如果代码在没有用户例行访问的锁定机器上运行,那么Ken的第一个建议是合适的,只要您的组织的安全人员可以使用未通过身份验证的ID文件即可。
在几乎所有其他情况下,Jasper建议使用Notes C API中的Extension Manager钩子是合适的,并且C ++ API工具包中包含的示例extpwd.c代码是一个良好的开端。但是,不要只将密码存储在名为password.txt的文件中!无论您在何处存储密码,都需要加密密码,否则这与使用未密码的ID文件一样不安全。 (说实话,即使加密存储也不是很好的安全措施,因为分析代码的人可能会恢复密钥,但这是我们为方便起见而做出的妥协之一。)