0

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

谢谢你。

PS我关心实际的安全性,它只是查看谁在登录的一种方式。人们也将登录到同一个 Windows 帐户……这比切换用户要快。

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

4

3 回答 3

2

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

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

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

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

于 2012-07-17T21:54:26.033 回答
1

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

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

所以你Shell = Explorer.exe改为Shell = C:\path\to\Myapplication.exe.

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

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

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

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

于 2012-07-18T10:23:50.763 回答
1

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

于 2014-12-10T15:47:45.443 回答