如果在 NetUserAdd 之后调用得太快,NetUserDel 会失败吗?
NetUserDel fails if called too soon after NetUserAdd?
我的 Windows 应用程序使用
- NetUserAdd 创建本地用户帐户
- LookupAccountName 获取用户 sid
- NetUserGetInfo 获取二级用户信息
- NetUserDel删除本地用户帐号
在真实环境中,应用程序运行良好,因为没有人会添加用户并立即删除它。但是,我的测试是这样做的,所以它偶尔会以意外的方式在 NetUserGetInfo 或 NetUserDel 上失败。没有返回错误代码。应用程序在 Windows 7 和 Windows 10.
中静默终止
我可以想象当NetUserAdd returns时,用户帐户可能还没有在后台完全构建。在调用 NetUserDel 之前,是否有推荐的方法来检查用户帐户是否处于稳定状态?
LookupAccountName 总是成功,所以它不是一个好守卫。 NetUserGetInfo 本身偶尔会意外失败。我在 MSDN 文档中找不到其他 API(那里的例子很少)。
与其使用那些不稳定的 win32 API,不如通过 system() 调用 DOS 命令 "net user" 可以绕过这个问题。
我的 Windows 应用程序使用
- NetUserAdd 创建本地用户帐户
- LookupAccountName 获取用户 sid
- NetUserGetInfo 获取二级用户信息
- NetUserDel删除本地用户帐号
在真实环境中,应用程序运行良好,因为没有人会添加用户并立即删除它。但是,我的测试是这样做的,所以它偶尔会以意外的方式在 NetUserGetInfo 或 NetUserDel 上失败。没有返回错误代码。应用程序在 Windows 7 和 Windows 10.
中静默终止我可以想象当NetUserAdd returns时,用户帐户可能还没有在后台完全构建。在调用 NetUserDel 之前,是否有推荐的方法来检查用户帐户是否处于稳定状态?
LookupAccountName 总是成功,所以它不是一个好守卫。 NetUserGetInfo 本身偶尔会意外失败。我在 MSDN 文档中找不到其他 API(那里的例子很少)。
与其使用那些不稳定的 win32 API,不如通过 system() 调用 DOS 命令 "net user" 可以绕过这个问题。