Domanda

Ho scritto uno script User Manager gli usi NTLMSetUserInfo a impostare le password di alcuni utenti, tra cui ADMIN ... quello che ho notato però è che se faccio questo la combinazione username / password funziona perfettamente per tutti gli scenari, come Telnet, HTTP Auth ecc, ma non la navigazione del file.

Ulteriori controlli in seguito ho notato che quando si imposta la password di amministratore attraverso il built nelle pagine web di configurazione CE funziona.

Il Registro di sistema per Admin assomiglia così quando uso NTLMSetUserInfo

NT = [hex value]

Il Registro di sistema per Admin contiene un campo aggiuntivo, Password quando ho impostato la password di amministratore tramite le pagine web CE.

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

I figura NTLMSetUserInfo non impostare la password CE globale per Admin correttamente, quindi non essendo in grado di ricerca file sulla scatola.

Ho trovato la seguente funzione nel codice web CE parsing DLL che fa il lavoro chiamato SetPassword . Ho scritto una funzione separata per trattare i casi Admin ma non posso farlo per compilare. Ecco un frammento di esso

#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;
}

Questa non verrà compilato affermando che 'SetPassword': identifier not found. Ho notato nel documentazione CE per SetPassword ha la seguente riga

  

Per usare questa funzione, è necessario includere   la componente della password, Fspass, in   il file Cesysgen.bat.

Non sono sicuro di ciò che questo significa come io sono abbastanza nuovo per PlatformBuilder ecc ...

Chiunque può aiutare me o punto nella giusta direzione?

È stato utile?

Soluzione

Aggiungere la seguente alla parte superiore del vostro file di codice:

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

Il linker farà il resto.

Altri suggerimenti

Non riesco a dare una risposta esatta in questo momento (mai usato questa autenticazione). Ma, ho solo cercato di utilizzo (in realtà la compilazione) SetPassword in una versione clonata del driver bluetooth AudioGateway ho e compila senza problemi.

Quando ho provato ad usarlo in un sottoprogetto o di un progetto di regolare indipendentemente ho avuto lo stesso errore che avete ottenuto. Quindi una soluzione rapida potrebbe essere quella di fare questo in un driver e vedere se funziona.

Per quanto riguarda il commento nella documentazione Presumo che scende ad avere la SYSGEN_FSPASSWORD selezionato nel catalogo anche se non ho ancora traccio questo. Credo che avete selezionato questo se è possibile impostare le password e così via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top