需要控制Windows登录过程

时间:2012-03-01 22:08:43

标签: windows vb6 winlogon

我有一个我在VB6中编写的应用程序,它需要在用户登录后但在桌面实际加载之前运行。你问为什么,我会告诉你的。 VB应用程序要求用户提供针对外部数据库验证的一些信息。如果验证失败,则不应允许用户登录,因此VB应用程序强制注销。我已经阅读了一些关于msGina.dll和登录过程的文章,但我仍然没有找到可行的解决方案。关于这个的任何想法?

3 个答案:

答案 0 :(得分:1)

理想情况下,您需要编写自己的GINA提供程序来修改Windows中的登录机制。但是,要明白这是一项严肃的工作,需要你用C / C ++编写你的代码,你必须非常非常小心你如何构建它,以便不打开几个后门和漏洞,以便你不会破坏Windows的其他部分。

你的VB6应用程序不是出于多种原因而进入这种情况的方式,其中最重要的一点是,完全拦截和绕过你的安全机制非常简单。

建立一个登录机制似乎是一块蛋糕,直到你真正开始挖掘如何建立一个坚如磐石和防弹的。我知道这是因为我曾经带领团队为欧洲政府的安全桌面构建自定义GINA!

如果您确定要构建自定义GINA,请查看这些概述文章:

Customizing GINA, Part 1

Customizing GINA, Part 2

答案 1 :(得分:1)

GINA是一种选择,但仅适用于Windows XP。 Windows Vista及更高版本的等效项为credential provider

作为替代方法,您可以通过更改此注册表项中的Userinit值来更改初始用户进程:

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

如果这样做,请确保您的应用程序在完成后启动userinit,否则将无法启动用户的shell。请注意,这不会阻止知识渊博的用户绕过您的应用程序,至少没有进一步的步骤。

在登录过程中,credential manager可以与用户进行交互,但我不认为它提供了拒绝登录的任何直接方式。可能会一起破解某些东西,但我不推荐它。

我相信group policy client-side extension能够拒绝用户登录,但我不熟悉这项技术。

答案 2 :(得分:0)

这是一种非常奇怪的安全方法,您可以查看“Autoexec.bat”文件,尽管我自己并没有弄乱这个。无论哪种方式,我怀疑用户可能会从任务管理器“结束任务”你的VB6应用程序,并开始他们的快乐方式。

相关问题