Custom Shell update ???

O

Ole Tetzschner

Hi...

Just having XPE up and running... actually it took some weeks but now
it runs with my own shell. My question is now, how do I update
c:\windows\system32\myShell.exe on a running XPE ???. Of couse I can't
just overwrite the file because the file is locked, but is it somehow
possible when the system reboot to overwrite this file before the
shell is loaded ???.

With kind regards

Ole Tetzschner
datalogistic
 
L

Lucvdv

Hi...

Just having XPE up and running... actually it took some weeks but now
it runs with my own shell. My question is now, how do I update
c:\windows\system32\myShell.exe on a running XPE ???. Of couse I can't
just overwrite the file because the file is locked, but is it somehow
possible when the system reboot to overwrite this file before the
shell is loaded ???.

In NT-based OSes, most exes and dlls can be renamed while they are
running even though the files are locked. Rename the file, copy in
the new version, restart.

You can delete the renamed old version at the next boot to avoid
getting stuck with multiple updates, or generate unique filenames.


This doesn't work for all apps though, sometimes the rename operation
fails. The approach I use in those cases is to copy each version into
its own directory instead of system32 (something like
C:\Shell\Version1.0.1538.12750\MyShell.exe), and update the Shell
registry setting to the new path.

The Shell setting is located here:
| HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon.

The next time the system boots, it will start the new version.
 
O

Ole Tetzschner

Lucvdv said:
In NT-based OSes, most exes and dlls can be renamed while they are
running even though the files are locked. Rename the file, copy in
the new version, restart.

You can delete the renamed old version at the next boot to avoid
getting stuck with multiple updates, or generate unique filenames.


This doesn't work for all apps though, sometimes the rename operation
fails. The approach I use in those cases is to copy each version into
its own directory instead of system32 (something like
C:\Shell\Version1.0.1538.12750\MyShell.exe), and update the Shell
registry setting to the new path.

The Shell setting is located here:
| HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon.

The next time the system boots, it will start the new version.

Hi Lucvdv

Thanks for your reply. I tried both solutions and they both works :).
Guess that i will go for the last solution because you mention that
the first solution sometimes fails.

Kind regards

Ole Tetzschner
datalogistic
 
L

Lucvdv

Thanks for your reply. I tried both solutions and they both works :).
Guess that i will go for the last solution because you mention that
the first solution sometimes fails.

It fails with some applications.
As far as I know, if it works with an application once, it's safe to
assume that it will always work with that application.

But personally I prefer the other solution too, because it leaves the
previous version behind untouched, so it's easy to fall back on if
something goes wrong.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top