Vista-替换默认的Windows Shell [英] Vista - Replacing default windows Shell

查看:105
本文介绍了Vista-替换默认的Windows Shell的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基本问题是我们要替换默认值Vista Shell,Explorer.exe,带有我们自己的.但是,它不会及时显示UI.它似乎正在运行,但是登录过程在UI中并未正确显示.我正在寻找一种通知系统我们的Shell程序已准备就绪的方法.

 

这是我们的详细信息在做.

 

>

  1. 修改以下注册表项(此键是在用户登录帐户时启动资源管理器的键).
  1. HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ winlogon \ Shell

原始值:Explorer.exe

                                                               i.      Original value: Explorer.exe

新值:OurShellProgram.exe

                                                             ii.      New value: OurShellProgram.exe

  1. 修改以下注册表项(此登录系统时显示详细消息,仅用于调试目的)
  1. HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ policies \ system \ verbosestatus

设置值1

                                                               i.      Set value 1

  1. 退出帐户
  2. 重新登录帐户
  1. Log out of the account
  2. Log back into the account
  1. 由于步骤1,OurShellProgram.用户在此输入密码后,exe就会运行.
  2. OurShellProgram.exe运行其他程序并等待用户输入.
  1. Because of step 1, OurShellProgram.exe is being run after the user enters there password.
  2. OurShellProgram.exe runs a different program and waits for the users input.

使用以下API(CreateProcess)启动程序

                                                               i.      To start the program it using the following API (CreateProcess)

然后它会等待创建窗口,并准备使用以下API(WaitForInputIdle)供用户输入

                                                             ii.      It then waits for the window to be created and ready for user input using the following API (WaitForInputIdle)

然后它使用以下API(WaitForSingleObject)等待子进程结束,并等待INFINITE的时间. ***如果将其更改为不等待explorer.exe,并且新的子进程出现而没有增加等待时间.

                                                            iii.      It then waits for the child process to end using the following API (WaitForSingleObject) and a wait time of INFINITE.  ***If this is changed to not wait explorer.exe and the new child process shows up without the added wait time.

程序存在后,我们将注册表项从步骤1更改回"Explorer.exe",然后启动外壳程序资源管理器.exe使用CreateProcess API.

                                                           iv.      After the program exists we change the registry key from step 1 back to "Explorer.exe" and then launch the shell program Explorer.exe using the CreateProcess API.

  1. 但是却看不到子进程我们会及时看到Windows启动消息,并在以下消息上停止:准备桌面".系统需要花费额外的30秒时间,我们才能看到子进程,用户才能与之交互.但是我认为子进程正在运行并正在等待用户输入,但是系统正在等待某些东西才能显示子进程的窗口,我只是不知道它在等待什么.

谢谢

推荐答案

您好,我的行为相同. ..就像Windows正在等待加载时的explorer.exe响应一样...

Windows 7和Windows 2008的行为相同...

您解决了吗无论如何? ...我尝试监视注册表,但是什么也没有...

谢谢.
Hello, i'm with the same behavior ... is like windows is waiting something that explorer.exe response when is loaded ...

The same behavior with Windows 7 and Windows 2008 ...

Do you solve this in anyway? ... i try monitoring the registry, but nothing ...

Thanks.


这篇关于Vista-替换默认的Windows Shell的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆