سؤال

لقد كتبت برنامجًا نصيًا لمدير المستخدم الاستخدامات NTLMSetUserInfo لتعيين كلمات مرور لبعض المستخدمين ، بما في ذلك ADMIN... ما لاحظته هو أنه إذا قمت بذلك ، فإن مجموعة اسم المستخدم / كلمة المرور تعمل بشكل مثالي لجميع السيناريوهات مثل Telnet و HTTP Auth وما إلى ذلك ولكن لا تصفح الملفات.

عند إجراء مزيد من الفحص ، لاحظت أنه عند تعيين كلمة مرور المسؤول من خلال صفحات ويب تكوين CE المضمنة ، فإنها تعمل.

يشبه سجل المسؤول ذلك عندما أستخدمه NTLMSetUserInfo

NT = [hex value]

يحتوي سجل المسؤول على حقل إضافي ، Password عندما أقوم بتعيين كلمة مرور المسؤول عبر صفحات الويب CE.

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

أنا رقم NTLMSetUserInfo لا يعين كلمة مرور CE العالمية للمسؤول بشكل صحيح ، وبالتالي عدم القدرة على تقديم تصفح على المربع.

لقد وجدت الوظيفة التالية في رمز الويب CE الذي يقوم بتحليل 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 لديها السطر التالي

لاستخدام هذه الوظيفة ، يجب تضمين مكون كلمة المرور ، FSPASS ، في ملف cesysgen.bat الخاص بك.

لست متأكدًا من معنى هذا لأنني جديد جدًا على PlatformBuilder وما إلى ذلك ...

هل يمكن لأي شخص مساعدتي أو توجيهني في الاتجاه الصحيح؟

هل كانت مفيدة؟

المحلول

أضف ما يلي إلى أعلى ملف الرمز الخاص بك:

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

الرابط سوف يفعل الباقي.

نصائح أخرى

لا يمكنني إعطاء إجابة دقيقة الآن (لم تستخدم هذه المصادقة). لكنني حاولت فقط استخدام (تجميع بالفعل) SetPassword في نسخة مستنسخة من برنامج تشغيل Bluetooth Audiogateway الذي لدي ويجمعه دون مشاكل.

عندما حاولت استخدامه في مشروع فرعي أو مشروع مستقل منتظم ، كان لدي نفس الخطأ الذي حصلت عليه. لذلك قد يكون الحل السريع هو القيام بذلك في برنامج تشغيل ومعرفة ما إذا كان يعمل.

فيما يتعلق بالتعليق في المستندات ، أفترض أنها تنخفض إلى وجود SYSGEN_FSPASSWORD تم اختياره في الكتالوج على الرغم من أنني لم أتتبع هذا بعد. أعتقد أن لديك هذا المحدد إذا كان يمكنك تعيين كلمات المرور وما شابه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top