最近接到一个需求,要做一个自定义桌面,限制系统级别的操作,比如禁用注册表,任务管理器,开始菜单和安全模式等, 员工电脑只能在这个桌面上管理日常的应用,目的是方便公司管理员管理。
先不讨论通过组策略或者云桌面什么的。现有的功能做的差不多了,但是开机自启动,客户想输入密码从系统欢迎页进入系统后,能直接弹出自定义桌面。目前实际过程中会在原系统桌面上停留个几秒时间来加载系统服务,有没有办法在欢迎页进入到系统后就立马弹出我的程序,或者换一种思路能控制欢迎页面的等待时间,所有东西加载完后进去就看到自定义的桌面。
1
mmdsun 2019-02-11 16:31:05 +08:00
记得 windows embedded standard 可以自定义启动桌面。win7 应该差不多。看一下 embedded standard 的文档吧。
|
2
ixiaozhi 2019-02-11 16:34:56 +08:00 1
有个简单的想法,桌面不留任何快捷方式,任务栏隐藏,换个应用第一屏的壁纸...
|
3
mmdsun 2019-02-11 16:35:48 +08:00 1
关键字是:Custom Shell 可以改注册表。谷歌一下
|
4
Mithril 2019-02-11 16:46:29 +08:00 1
Desktop 实际上是 Explorer 那个程序提供的,你可以试试把它直接禁掉,同时设置一个 User Logon 启动的程序。
当然最好的办法就是 @mmdsun 说的直接用 custom shell |
5
yss729 OP @mmdsun 谢谢大神,我目前程序是用 c#写的,基于.netframework4.5,如果用 custom shell 方案是要重写的对吧,而且好像还要用 c/c++?
|
6
yss729 OP @Mithril 谢谢,你这个也是一个办法,我也想过,我的程序是用 c#写的,如果能控制到进入系统前先结束 explorer.exe 进程,能保证我的桌面能起来那也是可以的,无非在我桌面启动后再恢复那个进程,我的程序已设置优先保证在最前端位置,最大化,禁用了最小化和关闭按钮,包括禁用了一些能产生退出效果的快捷键。custom shell 可能是更好的方案,但现阶段我只能通过应用层面去控制
|
8
mmdsun 2019-02-11 16:58:54 +08:00 1
不用 c++,办法很多 。这里有不少解决思路:
https://stackoverflow.com/questions/33364908/how-to-run-an-application-as-shell-replacement-on-windows-10-enterprise @echo off echo Bootstrapping, please wait ... start /b "Bootstrap" "C:\vmwatcher\VMViewClientWatcher.exe" https://msdn.microsoft.com/en-us/library/ms838576(v=WinEmbedded.5).aspx |
9
yss729 OP @mmdsun 非常感谢,根据那个注册表键把 explorer.exe 改成我的应用程序应该就能完美解决! 第一次在 V2EX 提问,大家真的很棒!!
|