標籤:
之前客戶要求我們能夠在windows登陸介面能夠用指定賬戶批量控制機器登陸,然後用windows credentials provider(vista以上,xp需要用Gina)實現了這個功能,這期間遇到了一些問題:
如果使用者加入域之後,再重新進入登陸介面,就需要按安全序列也就是Alt Contrl Delete,這個由於比較特殊一直沒有類比成功,採用了註冊表的方式,禁用了這安全序列,這個方法並不完美,因為每次重新加入域後,對應註冊表的索引值都會被重寫,設定為預設,就是需要輸入安全序列。後面客戶要求這個SAS不能被禁用,沒辦法只好找其他的法子了。研究了下vnc的代碼,發現它是用api sendsas
實現的,之前也查到這個api,沒有認真讀文檔,一直沒實驗成功,後面發現原來是需要簽名的,看來還是要認真讀文檔。另外還有一點就是還要修改組策略使其服務或程式能夠類比SAS(詳見MSDN)。代碼很簡單
HMODULE hmodule=LoadLibrary(L"sas.dll"); SendSas s=(SendSas)GetProcAddress(hmodule,"SendSAS"); if (s) { s(true)//(or false ); }
啟用SAS
1 Windows Registry Editor Version 5.00 2 3 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] 4 "DisableCAD"=dword:00000000 5 6 [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] 7 "DisableCAD"=- 8 9 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]10 "DisableCAD"=-11 12 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]13 "DisableCAD"=-
禁用SAS
1 Windows Registry Editor Version 5.00 2 3 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] 4 "DisableCAD"=dword:00000001 5 6 [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon] 7 "DisableCAD"=- 8 9 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]10 "DisableCAD"=-11 12 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]13 "DisableCAD"=-
參考MSDN SendSAS說明
https://msdn.microsoft.com/en-us/library/windows/desktop/dd979761(v=vs.85).aspx
csdn上的一篇文章
http://blog.csdn.net/chenyujing1234/article/details/8286492
Windows vista以上類比Alt Ctrl Delete