Проблема с настройкой пароля ADMIN в Windows CE - PullRequest
0 голосов
/ 29 апреля 2010

Я написал скрипт менеджера пользователей, который использует NTLMSetUserInfo для установки паролей некоторых пользователей, включая ADMIN ... Однако я заметил, что если я сделаю это, то имя пользователя / пароль Комбинация отлично работает для всех сценариев, таких как Telnet, HTTP Auth и т. д., но НЕ для просмотра файлов.

При дальнейшей проверке я заметил, что при установке пароля администратора через встроенные веб-страницы конфигурации CE он работает.

Реестр для администратора выглядит так, когда я использую NTLMSetUserInfo

NT = [hex value]

Реестр для администратора содержит дополнительное поле Password, когда я устанавливаю пароль администратора через веб-страницы CE.

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

Я полагаю, NTLMSetUserInfo неправильно устанавливает глобальный пароль CE для Admin, следовательно, не может просматривать файл в окне.

В DLL-файле синтаксического анализа веб-кода CE была обнаружена следующая функция, которая называется 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 и т. Д ...

Кто-нибудь может мне помочь или указать мне правильное направление?

Ответы [ 2 ]

0 голосов
/ 16 июня 2010

Добавьте следующее в начало вашего файла кода:

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

Компоновщик сделает все остальное.

0 голосов
/ 29 апреля 2010

Я не могу дать точный ответ прямо сейчас (никогда не использовал эту аутентификацию). Но я просто попытался использовать (на самом деле компилировать) SetPassword в клонированной версии драйвера Bluetooth AudioGateway, который у меня есть, и он компилируется без проблем.

Когда я пытался использовать его в подпроекте или обычном независимом проекте, у меня была та же ошибка, что и у вас. Таким образом, быстрое решение может быть сделать это в драйвере и посмотреть, работает ли он.

Что касается комментариев в документах, я предполагаю, что они сводятся к выбору SYSGEN_FSPASSWORD в каталоге, хотя я еще не отслеживал это. Я полагаю, вы выбрали это, если можете установить пароли и тому подобное.

...