我想创建一个VB.net程序,它会在用户向桌面显示密码之前提示用户。如果密码正确,它将登录。如果不正确,经过几次尝试后,计算机将关闭。唯一的问题是启动程序而不显示任何图标或任务栏。我没有在开始菜单中尝试启动文件夹,因为它不会首先显示桌面?此外,我希望在桌面加载之前加载(然后在登录后继续加载桌面),这样您就无法通过任务管理器关闭它或意外地最小化表单(使用Windows Key) + D)。
谢谢。
P.S。我不关心实际的安全性它只是一种查看谁登录的方法。此外,人们将登录到同一个Windows帐户...它比切换用户更快。
(我正在使用Visual Studio 2010 Express。)
答案 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