當前位置:編程學習大全網 - 編程語言 - 編程自動輸入

編程自動輸入

壹.原則

在NT/2000/XP/2003中,WinLogon調用GINA?DLL實現,GINA?DLL提供了壹個交互式接口,為用戶登錄提供身份驗證請求。WinLogon會和GINA在壹起?DLL進行交互,默認是MSGINA.DLL(在System32目錄下)。微軟也給我們提供了接口,我們就可以自己寫GINA了?DLL來替換MSGINA.DLL。

WinLogon在初始化時將創建三個桌面:

Winlogon桌面:主要顯示Windows?安全界面,比如妳按CTRL+ALT+DEL,登錄界面等。

應用桌面:我們通常看到的與我的電腦的界面。

屏保桌面:屏保顯示界面。

默認情況下,GINA顯示登錄對話框,用戶輸入用戶名和密碼。。所以弄個用戶名和密碼?,妳可以寫壹個新的吉娜?DLL,它提供了壹個調用msgina.dll的函數WlxLoggedOutSAS的接口。

二、方案實施

吉娜?DLL將輸出以下函數(winlogon將調用這些函數):

(表1)吉娜?功能列表

功能描述

WlxActivateUserShell?激活用戶外殼

WlxDisplayLockedNotice?允許吉娜?DLL?顯示鎖定信息

當沒有用戶登錄時,WlxDisplaySASNotice Winlogon調用此函數。

WlxDisplayStatusMessage?Winlogon?調用此函數並顯示狀態消息。

WlxgetConsoleSwitchCredentials Winlogon調用此函數讀取當前登錄用戶的信任信息,並將它們透明地傳輸到目標會話。

WlxGetStatusMessageWinlogon?調用這個函數來獲取當前狀態信息。

wlx初始化指定窗口位置的GINA?DLL初始化

WlxIsLockOk驗證工作站是否正常鎖定。

WlxIslogoffOk驗證註銷是否正常。

WlxLoggedOnSAS用戶已登錄,工作站未鎖定。如果此時收到SAS事件,Winlogon?調用這個函數

WlxLoggedOutSAS沒有用戶登錄。如果此時收到SAS事件,Winlogon?調用這個函數。這個?表明?那個?答?登錄?嘗試?應該?是嗎?造的?。

WlxLogoff請求註銷操作時通知GINA?DLL?

WlxNegotiate表示當前的Winlogon版本是否可以使用GINA?動態鏈接庫

WlxNetworkProviderLoad加載網絡服務提供程序並收集標識和身份驗證信息後,Winlogon?調用這個函數

WlxRemoveStatusMessageWinlogon?調用這個函數告訴GINA?DLL?停止顯示狀態信息

WlxScreensaverNotify允許GINA與屏幕保護程序操作進行交互。

關閉前關閉Winlogon?調用此函數允許GINA執行任何關閉任務,例如從讀卡器退出智能卡。

當系統需要在用戶的上下文中啟動壹個應用程序時,WlxStartApplication調用這個函數。

WlxWkstaLockedSAS?當工作站被鎖定時,如果收到SAS,Winlogon?調用這個函數

為了簡化編程,我們可以從MSGINA.DLL動態獲取上述函數,直接調用MSGINA。自定義DLL(以下簡稱MyGina)中DLL的函數。DLL)。現在我們必須處理WlxLoggedOutSAS函數:

int?WINAPI?WlxLoggedOutSAS(PVOIDpWlxContext,

DWORDdwSasType,

PLUIDpAuthenticationId,

PSID?pLogonSid,

PDWORD?pdwOptions,

PHANDLEphToken,

PWLX_MPR_NOTIFY_INFO?pMprNotifyInfo,

PVOID?*pProfile)

{

//= = = = = = = = = = = = = = = = = = = =加入我的登錄= = = = = = = = = = = = = = = = = = =

克洛金?登錄;

如果?(登錄。DoModal()==IDCANCEL)

{

回歸?WLX _ SAS _ ACTION _ NONE

}

if(login.bCLOSE==TRUE)

{

回歸?WLX _ SAS _ ACTION _ SHUTDOWN

}

如果(登錄。DoModal()==IDOK)

{

夏爾?用戶名[40];

夏爾?密碼[40];

夏爾?password 2[40];

strcpy(用戶名,應用程序。my user);

strcpy(密碼,應用程序。my pass);

//為了演示方便,直接在程序中對比密碼,將默認的管理員賬號設置為自動登錄。

//自動登錄功能SetAutoLogon

strcpy(PassWord2,theApp。my pass 2);

//AfxMessageBox(用戶名);

//AfxMessageBox(密碼);

如果(!strcmp(用戶名,“管理員”))

如果(!strcmp(密碼,“123”))

如果(!strcmp(密碼2," 456 "))

{

SetAutoLogon("管理員",""," 123 ");

回歸?theApp。MyWlxLoggedOutSAS(pWlxContext,dwSasType,pAuthenticationId,

?pLogonSid、pdwOptions、phToken、pMprNotifyInfo、ppro file);

}

}

AfxMessageBox("密碼或用戶名錯誤!無法登錄!”);

回歸?WLX _ SAS _ ACTION _ NONE

}

然後設計登陸框,實現自己的界面。該示例如圖所示。

三。安裝和預防措施:

①寫GIAN?小心DLL,吉娜?DLL使用unicode。

(2)安裝GINA?DLL的安裝:

1.?添加註冊表

鍵名?:

\ HKEY _ LOCAL _ MACHINE \ Software \ Microsoft \ windows nt \ current version \ Winlogon

變量名?:?吉納德爾

可變類型?:?[註冊_SZ]

內容?:?“妳的吉娜?“DLL的名稱?如:“MyGina。動態鏈接庫:

2.?妳的吉娜會嗎?DLL(MyGina.dll)復制到系統目錄(system32);

3.?重啟機器,妳的吉娜?DLL(MyGina.dll)將運行。

註意

1)如果它進不了妳的系統,進入DOS後把msgina.dll復制到妳的GINA裏?可以輸入DLL(mygina . DLL);或者進入安全模式並刪除該鍵值(?吉納德爾?)。

2)控制臺?如果壹個程序想要使用MFC類,它必須包含

3)如果出現此錯誤:“鏈接?:?致命?錯誤?LNK1104:?不能?開放?文件?”mfc42u.lib "?",那解釋壹下?Lib路徑設置問題,您的鏈接器在指定的目錄中沒有找到這個文件,您應該添加壹個新的目錄以便編譯器可以找到所需的庫文件。位置:IDE中的工具\選項\目錄\顯示?目錄?for\?& lt圖書館?文件& gt。

4)如果出現此錯誤:“uafxcwd.lib(dllmodul.obj)?:?錯誤?LNK2005:?_DllMain@12?已經嗎?定義?在?main.obj?”還是“MFC 42 ud . lib(dll module . obj)?:?錯誤?LNK2005:?_DllMain@12?已經嗎?定義?在?main.obj?”,然後“看到了嗎?如果?妳呢。有嗎?_AFXDLL?然後呢。_USRDLL?在?那個?預處理器?定義。?試試?移除?壹個?的?他們.位置:在IDE中?菜單項目?\?設定?\?C/C++?\?預處理器?定義?。

  • 上一篇:我想在職校讀什麽專業才能找到好工作?
  • 下一篇:電氣自動化技術專業的學者?
  • copyright 2024編程學習大全網