2012-03-01 98 views
0

我有一個應用程序,我在VB6寫的,需要根據實際負載,但在桌面前的用戶登錄後向右運行Windows。爲什麼你問,那麼我會告訴你。 VB應用程序要求用戶提供一些針對外部數據庫進行驗證的信息。如果驗證失敗,那麼用戶不應該被允許登錄,因此VB應用程序強制註銷。我讀過一些關於msGina.dll和登錄過程的文章,但我仍然沒有找到可行的解決方案。關於這個的任何想法?需要控制登錄過程

回答

1

理想情況下,你會希望編寫自己的GINA提供商修改登錄機制在Windows中。然而,理解這是一個嚴肅的事情,需要你用C/C++編寫你的代碼,並且你必須非常非常小心你如何構建它,以便不打開幾個後門和漏洞,所以你不會破壞Windows的其他部分。

你的VB6應用程序是不是在這種情況下,以去多種原因,而不是其中最重要的是事實,這是非常容易的攔截和完全繞過安全機制的方式。

Buildng一個登錄機制似乎是小菜一碟,直到你真正開始挖掘到如何構建一個是堅如磐石防彈。我知道這一點,因爲我曾經帶領團隊爲歐洲政府的安全桌面建立定製的GINA!

如果您確定你想要去建立一個自定義GINA,再看看這些概述文章:

Customizing GINA, Part 1

Customizing GINA, Part 2

+1

記住的Windows XP這僅適用。 Windows Vista和更高版本有不同的機制。 – 2012-03-02 01:29:28

1

一個GINA是一種選擇,但只對於Windows XP。 Windows Vista和更高版本的等價物是credential provider

作爲替代方案,您可以通過此註冊表項更改USERINIT值改變初始用戶進程:當它完成

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 

如果你這樣做,請確保您的應用程序啓動USERINIT,或用戶的shell不會啓動。請注意,這不會阻止有知識的用戶繞過您的應用程序,至少不會沒有進一步的步驟。

A credential manager可以在登錄過程中與用戶交互,但我不認爲它提供了任何拒絕登錄的直接方式。有可能一起破解一些東西,但我不會推薦它。

我相信group policy client-side extension能夠拒絕用戶登錄的,但我不熟悉這個技術。

+0

我正在考慮用我需要它們進行交互的應用程序替換用戶的Shell。我的想法是,如果因任何原因取消應用程序,他們會註銷。如果他們通過了憑證測試,那麼他們可以繼續加載桌面。哪個註冊表值更適合使用'Shell'或'Userinit' – todd1215 2012-04-18 20:44:49

+0

可能是userinit,但我建議你嘗試一下。 – 2012-04-19 05:09:21

0

這是一個非常奇怪的安全方法,你可以看一下「Autoexec.bat」文件,儘管我自己並沒有搞砸這個。無論哪種方式,我懷疑用戶可能可以從任務管理器「結束任務」你的VB6應用程序,並開始他們的快樂方式。