2010-04-29 33 views
0

我寫了一個用戶管理器腳本,使用NTLMSetUserInfo來設置一些用戶的密碼,包括ADMIN ......但我注意到了,但是如果我這樣做,用戶名/密碼組合適用於所有場景,如Telnet,HTTP Auth等,但不包括文件瀏覽。在Windows CE上設置ADMIN密碼的問題

經過進一步檢查,我注意到當通過內置CE配置網頁設置管理員密碼時,它的工作原理。

admin的註冊表看起來像這樣,當我使用NTLMSetUserInfo

NT = [hex value] 

admin的註冊表包含一個額外的字段,Password當我通過CE網頁設置管理員密碼。

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

我想NTLMSetUserInfo沒有設置管理員全球CE的密碼正確,因此不能夠文件瀏覽到框。

我在CE web代碼解析DLL中發現了以下函數,它執行SetPassword作業。我編寫了一個單獨的函數來處理Admin案例,但我無法編譯它。這裏是它

#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 documentation for SetPassword它具有以下行

要使用此功能,您必須包括 密碼組件,Fspass,在 你Cesysgen.bat文件。

我不知道這意味着什麼,因爲我很新的PlatformBuilder等等

誰能幫助我或點我在正確的方向?

回答

0

以下添加到您的代碼文件的頂部:

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

連接器將做休息。

+0

Doh!你認爲這是問題嗎?我應該想到... – Shaihi 2010-06-17 04:57:43

+0

是的,這是當你找不到標題時的捷徑。我傾向於爲我所知道的函數做很多工作,但我找不到聲明(TouchCalibrate,SetPassword等)。 – ctacke 2010-06-17 13:52:26

0

我現在無法給出確切的答案(從來沒有使用過這種認證)。但是,我只是嘗試使用(實際編譯)SetPassword在我有藍牙AudioGateway驅動程序的克隆版本,它編譯沒有問題。

當我嘗試在子項目或常規獨立項目中使用它時,我遇到了同樣的錯誤。所以一個快速的解決方案可能是在驅動程序中執行此操作,並查看它是否有效。

關於文檔中的評論,我認爲他們會把目錄中的SYSGEN_FSPASSWORD選中,儘管我沒有跟蹤它。我想你有這個選擇,如果你可以設置密碼等。

+0

@Shaihi。感謝您的迴應。我們的SDK編譯了SYSGEN_FSPASSWORD,所以無法想象該組件不是SDK的一部分。你知道它是什麼LIB的一部分,所以我可以鏈接到它? – Chris 2010-04-30 08:22:40

+0

我只是將它添加到一個普通的驅動程序,它也編譯。我想它居住在'coredll'。我在release目錄的'coredll.dll'中搜索了函數名,並在那裏顯示。您是否嘗試將呼叫添加到驅動程序? – Shaihi 2010-05-02 06:17:20