创建一个计算机登录界面VB.net

时间:2012-07-10 21:24:08

标签: vb.net visual-studio-2010 login windows-xp-sp3

我想创建一个VB.net程序,它会在用户向桌面显示密码之前提示用户。如果密码正确,它将登录。如果不正确,经过几次尝试后,计算机将关闭。唯一的问题是启动程序而不显示任何图标或任务栏。我没有在开始菜单中尝试启动文件夹,因为它不会首先显示桌面?此外,我希望在桌面加载之前加载(然后在登录后继续加载桌面),这样您就无法通过任务管理器关闭它或意外地最小化表单(使用Windows Key) + D)。

谢谢。

P.S。我关心实际的安全性它只是一种查看谁登录的方法。此外,人们将登录到同一个Windows帐户...它比切换用户更快。

(我正在使用Visual Studio 2010 Express。)

3 个答案:

答案 0 :(得分:2)

可以通过添加条目到注册表来启动程序:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

请注意,应以纯文本格式存储密码。即使您不关心实际的安全性,您的用户也应该关心,因为许多人使用相同的密码来处理多件事。

有很多方法可以绕过这种类型的程序...

答案 1 :(得分:1)

您可以通过将其替换为注册表中的启动程序暂时暂停explorer.exe

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

因此,您将Shell = Explorer.exe更改为Shell = C:\path\to\Myapplication.exe

可以找到更多详细信息on MSDN(文章实际上关注XP Embedded,但在常规安装中应该以相同的方式工作)。

这样做,explorer.exe加载桌面和任务栏。 Windows启动我们编辑的注册表值中的.exe文件,并加载桌面和任务栏。通过将explorer.exe替换为您的程序,它会启动您的程序。

在您的应用程序启动explorer.exe后,桌面将正常加载。 (感谢Matt确认有效。)Process.Start("explorer.exe")将启动explorer.exe并加载您的桌面。

如果您没有将应用程序放在Windows目录中或将其添加到Path变量中,则需要完全限定位置(写上面的完整位置)。

答案 2 :(得分:1)

在命令行中设置shell:REG ADD HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon / v Shell / t REG_SZ / d / f