我使用Windows API NetUserModalsSet函数编写了代码,以设置最小密码长度。
现在,它具有不同的级别(结构)来设置我们想要的

USER_MODALS_INFO_0 这种结构使我们可以将密码长度的最大值指定为LM20_PWLEN(14)。如果给出的任何值大于此值,则返回无效参数错误。但是由于我想将其设置为更多,所以我使用了USER_MODALS_INFO_1001,因为它允许PWLEN(256)。

当我使用密码长度> 14的USER_MODALS_INFO_1001结构时,它将返回无效的参数错误。但是,如果我将其定义为14,则它可以正常工作。现在,它应该可以使用任何长度小于等于256的密码,但不能。

有这种现象表现出来的原因吗?我已附上代码片段

    USER_MODALS_INFO_1001 pBufPass;
    DWORD mode = 1001, value = 17,parm_err;
    printf("The minimum password length is going to be set as %lu\n",value);
    pBufPass.usrmod1001_min_passwd_len = value;
    printf("Value that is going to be set is : %lu\n",pBufPass.usrmod1001_min_passwd_len);
    NET_API_STATUS nStatus = NetUserModalsSet(NULL, mode, (LPBYTE)&pBufPass, &parm_err);
    if (nStatus != NERR_Success)
    {
        printf("Error while using NetUserModalsSet. Error code : %lu and parm_err : %lu\n", nStatus, parm_err);
        ret = false;
    }

最佳答案

对于 usrmod1001_min_passwd_len 结构的参数USER_MODALS_INFO_1001:

  • Windows 7 支持值 0和14
  • Windows 10 (测试版本1903)支持 0和256 (PWLEN)之间的值。
  • 09-30 14:45
    查看更多