代码之家  ›  专栏  ›  技术社区  ›  Chris

在Windows CE上设置管理员密码时出现问题

  •  0
  • Chris  · 技术社区  · 14 年前

    我写了一个用户管理器脚本 NTLMSetUserInfo 设置一些用户的密码,包括 ADMIN …不过,我注意到,如果我这样做,用户名/密码组合对于所有场景(如telnet、http-auth等)都非常有效,但不适用于文件浏览。

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

    当我使用 NTLMetuserinfo

    NT = [hex value]
    

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

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

    我想 NTLMetuserinfo 没有为管理员正确设置全局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 documentation for SetPassword 它有以下几行

    要使用此函数,必须包括 密码组件fspass,in 你的cesysgen.bat文件。

    我不知道这意味着什么,因为我对PlatformBuilder等很陌生…

    有人能帮我吗?或者给我指明正确的方向?

    2 回复  |  直到 14 年前
        1
  •  0
  •   ctacke    14 年前

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

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

    链接器将执行其余操作。

        2
  •  0
  •   Shaihi    14 年前

    我现在无法给出确切的答案(从未使用过此身份验证)。但是,我只是尝试使用(实际编译) SetPassword 在一个克隆版本的蓝牙音频网关驱动程序中,我可以毫无问题地编译它。

    当我试图在子项目或常规的独立项目中使用它时,我遇到了与您相同的错误。所以一个快速的解决方案可能是在一个驱动程序中这样做,看看它是否有效。

    关于文档中的评论,我认为应该归结为 SYSGEN_FSPASSWORD 在目录中选择了,尽管我还没有跟踪它。如果你能设置密码等等,我想你已经选择了这个。