# Replace Windows shell to launch Ignition client (advanced!)

**URL:** <https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979>\
**Category:** General Discussion\
**Created:** [February 10, 2012, 6:56pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979 "2012-02-10T18:56:09Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [February 10, 2012, 6:56pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/1 "2012-02-10T18:56:09Z")

</div>

EDIT: with the advent of the native client launcher, and the death of Java Web Start, This entire thread is somewhat defunct. However, if you want to replace the shell, here is the TLDR version. 🙂 [quote=“JordanCClark, post:17, topic:3979”]  
If your project has a desktop icon, you can copy the contents of the target field into the registry key value.

Computer\HKEY\_LOCAL\_MACHINE\SOFTWATER\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell  
[/quote]

* * *

For those playing along at home we had a topic [here](http://inductiveautomation.com/forum/viewtopic.php?f=72&t=7600) and other places discussing auto-launching a client and all the associated problems with it-- like people messing around with the 'puter and doing things they shouldn’t.

So, to get around all this, I’ve written an executable (in AutoIt, if anyone’s interested) to replace the Windows shell (explorer.exe). I’ve tested this on XP and Windows 7 without issue, but, Windows being Windows, your mileage may vary… 😆 I stuck a [youtube vid](http://www.youtube.com/watch?v=J72M-BrFteQ) to show it in action.

Before I go on, I will say that my anti-virus (Vipre) tagged the executable as a trojan. This is a false positive because of stupid malicious hacker-types (as opposed to me-- I only use my powers for good) doing stupid things to other people with their stupid code. This got tagged because we’re doing network calls, and then executing external code (the Ignition client). Other antivirus software may or may not tag it as well. If it does, let me know which ones, along with what it got tagged as, so I can submit there as well. I’ve submitted the .exe to Vipre, and should get cleared up in a day or two. I’ve added to source code so you can see what I’m doing. ![:mrgreen:](https://us1.discourse-cdn.com/inductiveautomation/original/1X/d23659b203d2d24d394be983a52adb2fa6fe23d4.gif "Mr. Green")

EDIT (2013-09-05): I’ve submitted the file to VirusTotal. [Here are the results](https://www.virustotal.com/en/file/f5ca3ddeb981ca410c4089c37636640352a0f8c536ae0c6af106aaf26ee51410/analysis/1378377689/).

Now this involves registry editing, and not necessarily for the faint of heart. The usual rules of “change at your own risk” is in full force. I recommend backing it up, just in case.

The zip file contains four files:  
[ul]IgnitionShell.exe: the actual shell  
ignition.ini: this ini file holds vital settings-- like where the server is and what project you’re running…  
Ignition Shell.au3– source code. feel free to play with, improve, whatever. I’m not squeamish. 😉  
shell.reg: registry file to help with the one registry change you’ll need.  
[/ul]

The .exe and .ini need to go into the C:windows/system32/ folder. This is squarely in the path of the search for executables, and for some reason, the shell couldn’t ever find the ini file until I explicitly told it where it was. So I picked the system32 folder. Put them both there and you’re good to go.

Next modify the ini file to reflect your setup. More details are in the ini file itself.

Now, you can either run regedit and go to the following key:  
[ul]Computer\HKEY\_LOCAL\_MACHINE\SOFTWATER\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell[/ul]  
and change the entry from explorer.exe to Ignition\_shell.exe  
-or-  
click on the .reg file and let it do it for you. Your choice! You can right-click on the file and pick Edit to see the contents beforehand.

Reboot and let 'er rip!

The good thing about this setup is that the new shell starts checking the server status right away and with no explorer.exe running, there’s nothing to click on-- a kiosk mode, if you want to call it that. I even made the status window non-clickable. And, you can still Ctrl-Alt-Del your way into the task manager and manually run explorer, regedit, Ignition\_shell, whatever, if needed. ![8)](https://us1.discourse-cdn.com/inductiveautomation/original/1X/587d7fe0d6822f36e81815ab06aa7164e9d2e057.gif "Cool")

Enjoy!  
[Ignition\_shell.zip](https://us1.discourse-cdn.com/inductiveautomation/original/1X/854487ff15c01f104453b7acf17f642b527f1508.zip) (283 KB)

---

<div class="post-metadata">

**Author:** ![Carl.Gould](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/carl.gould/32/7262_2.png) [@Carl.Gould](https://forum.inductiveautomation.com/u/Carl.Gould)\
**Post date:** [February 10, 2012, 7:30pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/2 "2012-02-10T19:30:38Z")

</div>

Wow. Nicely done!  
 ![](https://us1.discourse-cdn.com/inductiveautomation/original/1X/a5e80b4c5e78ad6432c48296f6b9d730c9b5e94f.gif)

---

<div class="post-metadata">

**Author:** ![Dravik](https://avatars.discourse-cdn.com/v4/letter/d/e274bd/32.png) [@Dravik](https://forum.inductiveautomation.com/u/Dravik)\
**Post date:** [February 10, 2012, 8:50pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/3 "2012-02-10T20:50:13Z")

</div>

Certain malware programs will undo the shell change, Also some windows updates.

So if it suddenly stops working and goes back to explorer, That’s probably why and nothing evil 😉

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [February 10, 2012, 9:14pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/4 "2012-02-10T21:14:18Z")

</div>

Well, nothing more evil than Windows… 😆

---

<div class="post-metadata">

**Author:** ![nathan](https://avatars.discourse-cdn.com/v4/letter/n/c5a1d2/32.png) [@nathan](https://forum.inductiveautomation.com/u/nathan)\
**Post date:** [February 11, 2012, 10:10am UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/5 "2012-02-11T10:10:11Z")

</div>

Lol - nice! Who’s talking in the background?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [February 12, 2012, 1:23am UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/6 "2012-02-12T01:23:56Z")

</div>

Ha! Just realized I didn’t mute the audio on that one! That’s our maintenance supervisor and me. Our desks are across from each other.

---

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://forum.inductiveautomation.com/u/Robert)\
**Post date:** [February 13, 2012, 7:16pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/7 "2012-02-13T19:16:08Z")

</div>

Nice splash screen. 😆

---

<div class="post-metadata">

**Author:** ![jmoniz](https://avatars.discourse-cdn.com/v4/letter/j/5daacb/32.png) [@jmoniz](https://forum.inductiveautomation.com/u/jmoniz)\
**Post date:** [September 4, 2013, 10:50pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/8 "2013-09-04T22:50:20Z")

</div>

Tried it on win 7. When the PC boots up I get a “cannot open script file”

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [September 5, 2013, 10:39am UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/9 "2013-09-05T10:39:46Z")

</div>

A couple of thoughts:

1. your antivirus is tagging it. The AV starts up even before the shell. Try making an exception for it.

2. 64-bit systems tend to redirect to syswow64 instead of system32. try moving the executable there.

My gut goes with the first one. It seems that the executable starts, but can’t get to the script compiled within it.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [September 5, 2013, 10:56am UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/10 "2013-09-05T10:56:44Z")

</div>

Just submitted my file to VirusTotal. If anyones interested, you can see the results [here](https://www.virustotal.com/en/file/f5ca3ddeb981ca410c4089c37636640352a0f8c536ae0c6af106aaf26ee51410/analysis/1378377689/).

---

<div class="post-metadata">

**Author:** ![CamJam](https://avatars.discourse-cdn.com/v4/letter/c/3ec8ea/32.png) [@CamJam](https://forum.inductiveautomation.com/u/CamJam)\
**Post date:** [July 26, 2016, 12:24pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/11 "2016-07-26T12:24:27Z")

</div>

Hi,  
I know this is an old thread, I have tried to modify the AutoIT script to see where im going wrong.

Please see attached photo  
screen when gateway not up  
[attachment=2]Capture.JPG[/attachment]  
screen when gateway is up  
[attachment=1]Capture2.JPG[/attachment]  
my AutoIT file is here  
[attachment=0]Ignition Shell (2).zip[/attachment]

I see that once the port is up and responding, its looking for something like “main/web/home” to confirm the Ignition Gateway is up, but when I compare to what I actually receive when it is up I get the difference shown in the pictures.

my .ini file have these attributes

; host-- Can be name or IP  
host=localhost

; port-- Port number Ignition server is running on  
port=8088

; project-- The name of the project you want to launch. The .jnlp extension is not needed.  
project=Test

; mode-- The mode of the running client. Values may be "fullscreen or “windowed”. “applet” is not supported.  
mode=fullscreen

I tried modifying the script a bit to get a match when the gateway is running, but I cant seem to get it to work. Is there something im missing?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [July 26, 2016, 2:13pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/12 "2016-07-26T14:13:28Z")

</div>

A blast from the past!

The homepage has changed a bit since I first wrote that. That was the original link attached to the home button. When it found that link in the homepage, then we we could go on from there.

There is another page you can monitor: the StatusPing page. This following code is completely untested, but it should grab the StatusPing page and try to find the running status.

`While $success=0
	$label1="Attempt #" & $tryNumber & " to verify context is running..."
	GUICtrlSetData($l5, $label1)
	Local $sData = BinaryToString(InetRead("http://"& $host &":" & $port & "/main/StatusPing",1))
	Local $nBytesRead = @extended
	If StringInStr($sData,"RUNNING")<>0 Then
		$success=1
		$label1="Successful context check after attempt #" & $tryNumber
		GUICtrlSetData($l6, $label1)
		$label1="All checks complete! Starting Ignition Client"
		GUICtrlSetData($l7, $label1)
	Else
		$label1 = "Try #"&$tryNumber&" unsuccessful..."
		GUICtrlSetData($l6, $label1)
		$tryNumber=$tryNumber+1
		SLEEP(3000)
	EndIf
WEnd`

---

<div class="post-metadata">

**Author:** ![anadal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/anadal/32/5740_2.png) [@anadal](https://forum.inductiveautomation.com/u/anadal)\
**Post date:** [January 26, 2017, 2:58pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/13 "2017-01-26T14:58:30Z")

</div>

Thanks Jordan,  
With a few modifications it worked on Windows 8.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [January 26, 2017, 3:57pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/14 "2017-01-26T15:57:23Z")

</div>

Thanks, anadal! Glad you got it working.

So what did I miss in the interim?

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [November 27, 2018, 6:23am UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/15 "2018-11-27T06:23:40Z")

</div>

the download link is dead. could you please upload it again.  
thank you.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 27, 2018, 1:29pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/16 "2018-11-27T13:29:07Z")

</div>

With the advent of the client launcher and the death of Java Web Start, the stuff above isn’t really needed anymore.

You should be able to replace the explorer shell with the client launcher.

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 27, 2018, 4:49pm UTC](https://forum.inductiveautomation.com/t/replace-windows-shell-to-launch-ignition-client-advanced/3979/17 "2018-11-27T16:49:17Z")

</div>

I took a moment to verify this. If your project has a desktop icon, you can copy the contents of the target field into the registry key value.

```python
Computer\HKEY_LOCAL_MACHINE\SOFTWATER\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

```
