0

我已经编写了一个用户管理器脚本,用于NTLMSetUserInfo设置某些用户的密码,包括ADMIN......我注意到的是,如果我这样做,用户名/密码组合适用于所有场景,如 Telnet、HTTP Auth 等,但不是文件浏览。

经过进一步检查,我注意到通过内置的 CE 配置网页设置管理员密码时,它可以工作。

当我使用时,管理员的注册表看起来像这样NTLMSetUserInfo

NT = [hex value]

Password当我通过 CE 网页设置管理员密码时,管理员的注册表包含一个额外的字段。

NT = [hex value]
Password = [hex value]

NTLMSetUserInfo认为没有正确设置管理员的全局 CE 密码,因此无法将文件浏览到框中。

我在 CE Web 代码解析 DLL 中找到了以下函数,该函数称为SetPassword. 我编写了一个单独的函数来处理管理案例,但我无法编译它。这是它的一个片段

#include <windbase.h>

bool UserAccounts::SetAdminPassword(const std::string &passwordOld, const std::string &password)
{
    wchar_t wpass[512];
    wchar_t wpassold[512];

    mbstowcs(wpass, password.c_str(), 512);
    mbstowcs(wpassold, passwordOld.c_str(), 512);

    return SetPassword(wpassold, wpass) == TRUE;
}

这不会编译说明'SetPassword': identifier not found. 我在CE 文档中SetPassword注意到它有以下行

要使用此功能,您必须在 Cesysgen.bat 文件中包含密码组件 Fspass。

我不确定这意味着什么,因为我对 PlatformBuilder 等还是很陌生...

任何人都可以帮助我或指出我正确的方向吗?

4

2 回答 2

0

我现在无法给出确切的答案(从未使用过此身份验证)。但是,我只是尝试SetPassword在我拥有的蓝牙 AudioGateway 驱动程序的克隆版本中使用(实际编译)并且它编译没有问题。

当我尝试在子项目或常规独立项目中使用它时,我遇到了与您相同的错误。因此,一个快速的解决方案可能是在驱动程序中执行此操作并查看它是否有效。

关于文档中的评论,我认为它们归结为SYSGEN_FSPASSWORD在目录中选择了尽管我还没有跟踪这一点。如果您可以设置密码等,我猜您已选择此选项。

于 2010-04-29T13:36:19.310 回答
0

将以下内容添加到代码文件的顶部:

extern "C" BOOL SetPassword(LPWSTR lpszOldPassword, LPWSTR lpszNewPassword);

链接器将完成其余的工作。

于 2010-06-16T13:42:02.417 回答