View Full Version : HKEY_LOCAL_MACHINE\init - App does not start
ma_gu
18th November 2007, 02:02 PM
Hi,
I've programmed a small MFC-based Visual c++ application which I want to start automatically on boot on an ARTEMIS device. The earlier the app starts, the better. Thus, rather than creating a shortcut in windows\Start up, I decided to add a registry entry into HKLM/init as "Launch90" "myApp.exe" The executable is placed in the /Windows directory.
But it does not start as expected, just occasionally. I got the impression that the application comes up only the second or third reboot (soft reset) after installing the CAB file. After other reboots, no indication why the application fails.
I have already tried to vary the number right to "launch" in the key, tried to set a dependency, set the MFC to static and to dynamic, but the application does not start. (by the way, it works well when adding a shortcut to the start up directory). I have no idea why it does not work with the registry approach. Do I have to consider something special for such kind of applications?
thanks in advance for any idea...
Gunther
levenum
18th November 2007, 10:40 PM
Is it signed or authorized?
When you run your application your device asks you if it is OK to run because it is not signed (unless you disabled that in security settings).
If you answered yes once, it won't ask again.
However if you try to launch unsigned and unauthorized app from init it will just ignore it.
Another possibility is that your app is trying to access an unavailable resource (maybe something on storage card?) and crashes. Make sure everything it needs is available during init stage.
ma_gu
18th November 2007, 11:06 PM
I guess the signing issue is one of the reason for the problems. I've in the meantime created an individual certificate, installed it on the device, and signed my application with that cert.
The behaviour improved: At most reboots, my application comes up as expected. But sometimes it does not. I just rebooted my device 5 times, 4 times it worked and once, launching the app failed. Another reboot again succeeded.
Do you think when launching the application with the reg setting "Launch95", it sometimes happen that the MFC DLL can not be accessed (it is linked during runtime)?
baniaczek
19th November 2007, 12:23 AM
Create somewhere shortcut to execute your exe with one and only one parameter: "90"
Something like this:
0#\windows\myApp.exe 90
If app doesn't start - read this thread:
http://forum.xda-developers.com/showthread.php?t=302013
nothin
19th November 2007, 01:49 AM
initlauncher may be method for vjtoggletoday missing tray..hmmm.
thx for that topic.
ma_gu
19th November 2007, 05:22 PM
Thanks for the hints, but I'm still not satisfied with the outcomes. I've implemented the InitLauncher.exe (with slight modifications) and it works also with multiple reboots. But then I did a "hardcore test": I rebooted the device, InitLauncher.exe was executed and the second application came up. Then I've removed the battery. Since then it does not anymore work.
The certificate is still listed in the device, but could it be that something happened to the cert by killing the system? (For installing the cert, I simply copied the myCert.cer to the root directory and executed the cert installer by tapping the cer file.)
Or could the signature of the executable have been damaged? Any idea how to avoid such problems?
ma_gu
20th November 2007, 09:44 AM
Addendum to my last post: I've now tried to re-install the Certificate on the device by again clicking the *.cer file - autostart worked again. Thus, I assume that something happened to the certificate on the mobile device. But the question is: WHAT happened...?
Cotulla
20th November 2007, 09:55 AM
I recommend to you test all in emulator at first.
Or make hard reset and test on clear system.
ma_gu
21st November 2007, 10:03 AM
I did a hard reset, re-installed the application and tested again. On warmstarts, it mostly works, but not everytime.
And there's another thing that puzzles me: When I create the CAB-Installer, all modules get signed using the signtool. If one of the modules is replaced (e.g. the replacement .exe is just copied to the device and overwrites the existing one), on first start the device always pops up a security warning as it does with unsigned apps, although the new exe has been signed as well.
Could this be caused by using a proprietary signature rather than one of the commercial pre-installed ones?
I furthermore used the signtool to sign the CAB file (I also tried to include the certificate through a pre-XML file when creating the CAB file) - however, this has no effect: Anytime the CAB is being executed on the device, the security warning pops up...
Cotulla
21st November 2007, 03:00 PM
Possible you use wrong sertificate?
please show name of it.
Also don't forget to install certificate on device!
ma_gu
21st November 2007, 09:52 PM
Basically, its a self-created certificate. The certificate is acutally installed on the device (copied the .cer file to the device and clicked it - it then shows up in the device's certificate list)
When signed applications are manually started on the device there is no security warning. Thus, I assume that the signature of the executables and the installed cert match.
Again back to the start-up problem: When using user-created certificates and when autostarting apps through HKLM/init: Do these apps have to wait for another module to be loaded first?
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.