<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3719969187200074807</id><updated>2011-11-01T10:59:07.817-07:00</updated><category term='AMD'/><category term='MEDC'/><category term='Vista news and info'/><category term='Vista tips'/><category term='XPe tips'/><category term='HTPC'/><category term='MEDC 2007'/><category term='MCE news and info'/><category term='XPe news and info'/><category term='MCE tips'/><title type='text'>KM Blog</title><subtitle type='html'>Tips and Tricks for Windows Embedded development</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>73</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-919052185738852687</id><published>2009-01-30T12:30:00.000-08:00</published><updated>2009-01-30T12:33:39.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AMD'/><title type='text'>Dragon Soars and Yukon Finds Gold: Showing Depth and Breadth of AMD Platform Advantage</title><content type='html'>Did you see &lt;a href="http://www.businesswire.com/portal/site/google/?ndmViewId=news_view&amp;amp;newsId=20090130005577&amp;amp;newsLang=en"&gt;this&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Looks at the &lt;a href="http://cts.businesswire.com/ct/CT?id=smartlink&amp;amp;url=http%3A%2F%2Fbudurl.com%2FFlickRDragon&amp;amp;esheet=5884652&amp;amp;lan=en_US&amp;amp;anchor=photos&amp;amp;index=12"&gt;photos&lt;/a&gt; and &lt;a href="http://cts.businesswire.com/ct/CT?id=smartlink&amp;amp;url=http%3A%2F%2Fbudurl.com%2F6dot5GHz&amp;amp;esheet=5884652&amp;amp;lan=en_US&amp;amp;anchor=video&amp;amp;index=13"&gt;videos&lt;/a&gt;. This is impressive, isn't it?&lt;br /&gt;AMD, as usual, shows itself as being one of the most innovative companies in the Hi-Tech industry. Tough times but they still break the walls within R&amp;amp;D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-919052185738852687?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/919052185738852687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=919052185738852687' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/919052185738852687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/919052185738852687'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2009/01/dragon-soars-and-yukon-finds-gold.html' title='Dragon Soars and Yukon Finds Gold: Showing Depth and Breadth of AMD Platform Advantage'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-899752009068403407</id><published>2008-12-05T11:02:00.000-08:00</published><updated>2008-12-05T11:04:56.700-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTPC'/><title type='text'>AMD/Home Cinema PC: Who wants a Home Theater PC anyway?</title><content type='html'>AMD has published a nice article "&lt;a href="http://blogs.amd.com/home/archive/2008/12/03/who-wants-a-home-theater-pc-anyway.aspx"&gt;Who wants a Home Theater PC anyway?&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;AMD's blogs can be found &lt;a href="http://blogs.amd.com/home/default.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-899752009068403407?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/899752009068403407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=899752009068403407' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/899752009068403407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/899752009068403407'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2008/12/amdhome-cinema-pc-who-wants-home.html' title='AMD/Home Cinema PC: Who wants a Home Theater PC anyway?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7447413273990320526</id><published>2008-02-06T17:37:00.001-08:00</published><updated>2008-02-06T17:40:02.845-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #52: Registry guide</title><content type='html'>One of the best registry guides I've ever seen created for Win2000 and XP (and therefore for XPe) can be found &lt;a href="http://xpregistry.tvn.hu/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For instance, beautiful and very detail info on the [HKLM\HARDWARE] key and its subkeys is &lt;a href="http://xpregistry.tvn.hu/xpr0043.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7447413273990320526?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7447413273990320526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7447413273990320526' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7447413273990320526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7447413273990320526'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2008/02/registry-guide.html' title='XPe tip #52: Registry guide'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1074047811957288915</id><published>2008-01-31T17:09:00.000-08:00</published><updated>2008-01-31T17:13:09.515-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #51: Language/Keyboard layouts switch at runtime</title><content type='html'>Situation: Multiple Language Support&lt;br /&gt;In TD you added several preconfigured Input Language/Keyboard layouts to choose from.&lt;br /&gt;&lt;br /&gt;Bug: At runtime you cannot change (add new) a keyboard layout. It fails with an undescriptive error message "it cannot load the keyboard layout".&lt;br /&gt;&lt;br /&gt;Fix: Add "IME Prototype" component to yor project in TD, rebuild and deploy the image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1074047811957288915?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1074047811957288915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1074047811957288915' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1074047811957288915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1074047811957288915'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2008/01/xpe-tip-51-languagekeyboard-layouts.html' title='XPe tip #51: Language/Keyboard layouts switch at runtime'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-3188916083100591067</id><published>2007-06-01T11:08:00.000-07:00</published><updated>2007-06-01T11:23:11.866-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #50: Smallest Windows XP(e) based thin client image</title><content type='html'>Another &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_frm/thread/43f0fd236191197e/e5a493b3a6fb828f?lnk=raot&amp;hl=en#e5a493b3a6fb828f"&gt;post&lt;/a&gt; in the newsgroup has led me to an investigation in results of which I came up with probably the smallest networked XPe image that include fully functioning RDP client.&lt;br /&gt;&lt;br /&gt;Basically I suggested to start with image that would include the following:&lt;br /&gt;     - Your hardware + HAL (only hardware you plan to support in the image)&lt;br /&gt;&lt;br /&gt;     - NTFS FS/File format. The latter is zero-size and may bring more components in as dependencies - however not actually required if you don't plan to format disks in NTFS under XPe.&lt;br /&gt;        NTFS will help you to compress the file system and thus to minimize the disk space usage.&lt;br /&gt;&lt;br /&gt;     - Basic: NT Loader/Nt Detect/Windows API - GDI, Kernel, User, Advanced/Shell32 API/Ole32, OleAut32/Language support/Winsock/Common Controls and dialogs/etc.&lt;br /&gt;&lt;br /&gt;     - Terminal Server Client&lt;br /&gt;&lt;br /&gt;     - Windows RAM Disk Driver (this is for RAM or Remote Boot support if you plan to use it)&lt;br /&gt;&lt;br /&gt;     - Winlogon or Minlogon (big difference in image footprint and significant difference in boot time)&lt;br /&gt;&lt;br /&gt;     - CMD shell (useful for debugging purposes). You can remove this shell later when you are done with the image config, or replace it with your own custom shell or the &lt;em&gt;MSTSC.exe&lt;/em&gt; (RDP client) running as the shell.&lt;br /&gt;&lt;br /&gt;If you do the above with Minlogon your image size can be less than 96Mb (uncompressed). With Winlogon it will grow by ~20-30Mb. The given numbers are rough and I got those off some of my demo images I have here with RDP client working. The actual image size may very dependent on some other system specs. I often do more optimizations for image sizes in TD and post-FBA even if Minlogon used. Then 96Mb can go down to 64Mb or less (with RDP still working).&lt;br /&gt;&lt;br /&gt;Perhaps, the most sensitive area is the hardware support. If you use TAP output to create platform macro component please make sure to disable there as many component dependencies as possible based on your final target device specs. I typically use Selector Prototype component as the prototype for all my platform macros and it helps me to disable unnecessary hardware support in TD.&lt;br /&gt;&lt;br /&gt;Often, the challenge is to get the networking to work properly in the MS Client network environment and not blow the image size with lots of network components that have over-crossing dependency chains.&lt;br /&gt;&lt;br /&gt;So, continuing the path I just drew I got my VPC Minlogon image with fully capable RDP client running and tested down to uncompressed size &lt;strong&gt;~38Mb&lt;/strong&gt; / compressed &lt;strong&gt;~28Mb&lt;/strong&gt;.&lt;br /&gt;Plus you'd want to add 2-3 more Mb for the Terminal Services dynamic cache that is created at run time.&lt;br /&gt;Note: one real device the image would be smaller.&lt;br /&gt;&lt;br /&gt;As you can plainly see, the image is small enough to fit on cheapest 32Mb USB stick (yes, possible to make it to boot the image off a USB 2.0 device). Just imagine - you carry a stick that you can boot off on any Intel/AMD based machine and it will give you a Terminal Server Client capabilities to your network - cool!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-3188916083100591067?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/3188916083100591067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=3188916083100591067' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3188916083100591067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3188916083100591067'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/06/xpe-tip-50-smallest-windows-xpe-based.html' title='XPe tip #50: Smallest Windows XP(e) based thin client image'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-903537084453855672</id><published>2007-06-01T10:47:00.000-07:00</published><updated>2007-06-01T11:08:43.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #49: Why HORM restricted to EWF-RAM?</title><content type='html'>There was an interesting &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/62221787221bc839/a6d70827af22a6bc?lnk=raot&amp;hl=en#a6d70827af22a6bc"&gt;question&lt;/a&gt; posted to the newsgroup recently that I attempted to answer. Thought I want to add the ideas posted to my blog as well.&lt;br /&gt;&lt;br /&gt;The question was why HORM (feature of XPe SP2) is limited to EWF-RAM mode. HORM stands for &lt;a href="http://blogs.msdn.com/astebner/archive/2004/12/01/273462.aspx"&gt;Hibernate-Once-Resume-Many embedded&lt;/a&gt; enabling feature.&lt;br /&gt;In Fp2007 to the ewfmgr console tool (as well as to EWF API) a couple of new commands/functions have been added that are directly related to the HORM and basically allow you to activate and deactivate the feature at run time.&lt;br /&gt;&lt;br /&gt;You will also find a lot of internals on how HORM works in &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_frm/thread/d861295f3938308b/ad162b3d3b4b1b45?tvc=1&amp;hl=en#ad162b3d3b4b1b45"&gt;this&lt;/a&gt; thread where Slobodan and me discussed the HORM feature implementations way before it was called HORM :-)&lt;br /&gt;&lt;br /&gt;Now back to the original question. Why we are limitted to RAM overlay when HORM is used?&lt;br /&gt;I guess the main "limitation" there of EWF Disk mode vs EWF RAM Reg is that by default the overlay data is "persistent" in Disk mode.&lt;br /&gt;The major reason for using EWF RAM for HORM scenarios was that the changes you do while you work with the image that are redirected to RAM are going to get lost on reboot. This way whatever OS does about the hibernation file (&lt;em&gt;hiberfil.sys&lt;/em&gt;) will be lost as well and you can always go back to the original state of the device - this is basically the main purpose of the HORM.&lt;br /&gt;With EWF Disk the changes are redirected to Disk overlay (another hidden partition on the disk) and EWF will pick them up at the next boot until you clean the overlay or commit the changes (there is also a minor difference in behavior depending on what restore level you selected for the disk mode but it is irrelevant to this discussion).&lt;br /&gt;&lt;br /&gt;So, imagine the following scenario:&lt;br /&gt;&lt;br /&gt;     1) HORM is enabled. Hibernation file holds a valid state of the system saved at some point of time.&lt;br /&gt;&lt;br /&gt;    2) EWF is enabled too. Disk overlay is used. Initially the cache is *clean* (not really possible with EWF Disk mode when you enable HORM but just for the sake of this explanation).&lt;br /&gt;&lt;br /&gt;     3) You boot the image and it boots fast from the &lt;em&gt;hiberfil.sys&lt;/em&gt; file.&lt;br /&gt;&lt;br /&gt;     4) You work. FS (actually disk level) writes are redirected to Disk overlay, no files on the protected partition are actually changed on the disk including the &lt;em&gt;hiberfil.sys&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;     5) You reboot the system (gracefully or not doesn't matter since you are EWF protected).&lt;br /&gt;&lt;br /&gt;     6) The system boots from the same (old!) &lt;em&gt;hiberfil.sys&lt;/em&gt; file. This means it will restore all the driver and application states to whatever states they had in memory at the moment the golden image was hibernated. EWF driver also has some (old) state there where it remembers what was the Disk overlay content at that time, i.e. it thinks the overlay is *clean* (see step#2).&lt;br /&gt;      However, your actual Disk Overlay is not clean since it was modified in an earlier OS session (see step#4). Now you get a discrepancy between the disk overlay and its state in RAM (EWF state machine). This will likely lead to an exception within the EWF driver and, since EWF is a kernel driver, to a BSOD.&lt;br /&gt;&lt;br /&gt;      The situation is even worse if we go real and don't assume the *clean* initial state of the EWF overlay. Since at the time we hibernated the image the EWF was already enabled (it must be enabled) you already got some changes to the disk (often unintentional such as logs, registry hive changes, etc.) that were redirected to the overlay.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another issue could be that if you need to commit the changes (and stop the HORM) you won't be able to do that. The actual commit in Disk overlay mode occurs at the &lt;strong&gt;next boot time&lt;/strong&gt; after you issued the commit command. At boot EWF driver reads all the changes off the hidden data partition and applies them to the disk. Obviously, this happens way later than the OS (the loader and the kernel) loads the RAM image off the &lt;em&gt;hiberfil.sys&lt;/em&gt; (i.e. restores the system from the hibernation file). Since the &lt;em&gt;hiberfil.sys&lt;/em&gt; file is the old one the EWF driver there (its state machine) doesn't know the commit command was issued and you will never get out of the loop.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The only way to test the above scenario is to use one of the "hacks" we discussed with Slobodan in the newsgroup (see the link above). Otherwise, HORM will be disabled as reported by the ewfmgr. I also discovered that hibernation won't work at all while EWF Disk Mode is protecting (enabled) the system partition that holds the &lt;em&gt;hiberfil.sys&lt;/em&gt; file.&lt;br /&gt;&lt;br /&gt;The actual bug, in my opinion, is there in the latest Enhanced Write Filter component UI in TD. There Microsoft added the checkbox for HORM - very nice feature - but hesitate to disable the option when the settings are changed to Disk Overlay usage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-903537084453855672?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/903537084453855672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=903537084453855672' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/903537084453855672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/903537084453855672'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/06/xpe-tip-49-why-horm-restricted-to-ewf.html' title='XPe tip #49: Why HORM restricted to EWF-RAM?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-544700521357591716</id><published>2007-06-01T10:26:00.000-07:00</published><updated>2007-06-01T10:47:23.473-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #48: Get rid of System Tray icons and remap the UI</title><content type='html'>There are some 3rd party applications (and even Microsoft application like BlueTooth systray agent) that install icons in the SysTray area  - the right-lower corner of the Desktop screen. Some of these application rely on the presence of that icon to provide a way to access their UI. Unfortunately, often there is no other way left.&lt;br /&gt;&lt;br /&gt;When you are trying to get rid of Explorer shell (on some embedded devices that run a custom shell apps it will make sense) you will remove the SysTray ("Notification Area") as well since it is a part of the Explorer application. More precisely it is a part of the TaskBar feature of Explorer Desktop that runs as system shell.&lt;br /&gt;&lt;br /&gt;So, the question is how to get rid of the SysTray (the Explorer) but yet have a way to access such application UI? No easy answer.&lt;br /&gt;&lt;br /&gt;Here is what I'd suggest (posted my thoughts in this newsgroup &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/4d50164cd206a573/3b662aabc5ff5b17?hl=en#3b662aabc5ff5b17"&gt;thread&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;1) The best approach would be to implement the missing Explorer features within your own custom shell application. It is really hard with regards to some features and requires a lot of debugging on XP/XPe to understand how those features work and how to invoke and integrate them into your own application.&lt;br /&gt;Just to encourage you, I've done this for some of the Explorer features such as AutoPlay, Taskbar, Volume Manager and etc.&lt;br /&gt;&lt;br /&gt;2) How 3rd party applications install the icons in the System Tray area?&lt;br /&gt;It is basically about about one API function - &lt;strong&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp"&gt;Shell_NotifyIcon&lt;/a&gt;&lt;/strong&gt; - that is being used by  applications to add icons to SysTray area and be able to receive notifications from the shell by user clicks on those icons through the application window procedures (when you call that API you register your window procedure to receive the events). The Shell_NotifyIcon is exported by &lt;strong&gt;shell32.dll&lt;/strong&gt;. Assuming you don't use shell32.dll in your image that is supposed to run a custom shell, you can create your own version of shell32.dll that will expose (export) that function only. Used as a shim it will give you the full control over what and when that application is doing in the UI.&lt;br /&gt;&lt;br /&gt;3) Another way, much simpler, is to find out what messages are sent to the application window procedure when user clicks on the application specific icon in SysTray area or selects an item on the appropriate menu shown by the left-[right-]click on the SysTray icon. Knowing those messages and their parameters (likely WM_COMMAND messages) you can always implement them and send them out from your own shell to the 3rd party application being investigated. This way you can "remap" all the functions of the application icon in SysTray to your own UI.&lt;br /&gt;The best way to watch for the messages is to start with Microsoft Spy++ tool. Next steps is to subclass the window (via global hooks in Win32) and watch for the messages through debug output.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-544700521357591716?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/544700521357591716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=544700521357591716' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/544700521357591716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/544700521357591716'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/06/xpe-tip-48-get-rid-of-system-tray-icons.html' title='XPe tip #48: Get rid of System Tray icons and remap the UI'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-8346975483207925576</id><published>2007-06-01T01:28:00.000-07:00</published><updated>2007-06-01T01:39:40.746-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #47: UNMOUNTABLE_BOOT_DISK BSOD on VPC</title><content type='html'>While working on demo images that I deploy on VPC (Virtual PC 2004-2007) I noticed an interesting thing that makes a perfect sense though.&lt;br /&gt;&lt;br /&gt;I use the newest feature of Virtual Server 2005 R2 (and I love the feature) - Virtual Disk Mounting. That basically requires Microsoft Virtual Server SCSI disk device driver.&lt;br /&gt;What I noticed is that if I leave the VHD (virtual disk image) mounted in the OS on my development machine and I try to boot that image in VPC - I catch the UNMOUNTABLE_BOOT_DISK BSOD right away.&lt;br /&gt;&lt;br /&gt;This makes sense since the volume is not available for writes from within the VPC as the host OS locks the VHD image with the new disk device driver in the chain.&lt;br /&gt;&lt;br /&gt;The tip is simple - don't do that! Don't mount the VHD and try to boot from it in VPC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-8346975483207925576?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/8346975483207925576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=8346975483207925576' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8346975483207925576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8346975483207925576'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/06/xpe-tip-47-unmountablebootdisk-bsod-on.html' title='XPe tip #47: UNMOUNTABLE_BOOT_DISK BSOD on VPC'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7567167675881492637</id><published>2007-06-01T01:12:00.000-07:00</published><updated>2007-06-01T01:28:07.119-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #46: Another EWF related BSOD: UNMOUNTABLE_BOOT_DISK</title><content type='html'>Just discovered that if you use EWF Disk Overlay mode and set the disk overlay size (in TD) to something very small (by default it is only 1024Kb) you are going to get the UNMOUNTABLE_BOOT_DISK BSOD (Blue Screen of Death) right after the second reboot after you enabled the EWF.&lt;br /&gt;&lt;br /&gt;The reason is, probably, that when you enable EWF and reboot (to take the change in affect) the OS starts redirecting all the disk writes to the Disk overlay. It is trying to but obviously the size of the overlay (the size of the hidden partition that holds that Disk overlay) is not enough to cover all the changes, even unintentional ones like underlying system logs, changes to registry hives, etc. Somehow EWF doesn't give you any notifications about it (and that may make sense on a headless embedded devices, btw). At the next boot the disk writes saved in the overlay are validated and this leads to the BSOD.&lt;br /&gt;&lt;br /&gt;It is actually easy to prove that it is the EWF (not corrupted FS or etc.) that is the cause fot the BSOD. Just open up the system registry hive of the crashed image offline (from another OS load such as XP Pro or WinPE) and remove the EWF from the list of volume upper filters for the disk driver. You will be able to boot the "patched" image just fine.&lt;br /&gt;&lt;br /&gt;Another way to prove that is to delete the EWF hidden partition that holds the broken overlay. Obviously, EWF will become useless after that but you can always get it back to the  default working state by issuing the following command "&lt;strong&gt;&lt;em&gt;rundll32 ewfdll.dll, ConfigureEwf&lt;/em&gt;&lt;/strong&gt;" that will re-create and initialize the EWF config (overlay) partition on the disk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7567167675881492637?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7567167675881492637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7567167675881492637' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7567167675881492637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7567167675881492637'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/06/xpe-tip-46-another-ewf-related-bsod.html' title='XPe tip #46: Another EWF related BSOD: UNMOUNTABLE_BOOT_DISK'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-3162757998799699637</id><published>2007-05-31T22:08:00.000-07:00</published><updated>2007-05-31T23:00:28.421-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #45: EWF and Cloning</title><content type='html'>I guess the topic has been discussed in the newsgroup quite many times but since I just happened to run into a related issue and fixed the runtime I thought I should cover this in some details on this blog.&lt;br /&gt;&lt;br /&gt;What if you are tasked to create an embedded image that must include EWF and will be deployed to devices as is. In other words, there won't be technicians who can fix known issues with the image deployment in field.&lt;br /&gt;&lt;br /&gt;I am only going to cover here the case where all the target devices are identical - the same type of the hardware and number and type of peripherals attached. If this is not the case, it should be adopted/modified dependning on what hardware modifications you plan to do in the field (such as changing partition setup and so on).&lt;br /&gt;&lt;br /&gt;The task first seem to be trivial - you just have to properly clone the image on multiple target devices. Dependening on how you plan the clonig process (factory mode, etc.) and what's the target working environment will be (LAN, domain network, Internet, etc.) you will or will not include and setup the System Cloning Tool component.&lt;br /&gt;&lt;br /&gt;Unfortunately, that is only going to be that easy if you use EWF RAM Reg mode. The reason is simple - in RAM Reg mode EWF stores all the configuration settings in registry. So when you copy the image to another device, all the EWF settings will be properly copied along with that. No need to worry about hidden partitions and such. You can simply use &lt;em&gt;xcopy&lt;/em&gt; to copy the image files. Certainly, cloning tools such as Ghost or Altiris can be used as well no problem.&lt;br /&gt;&lt;br /&gt;However, in you happened to use EWF RAM or Disk mode you got yourself in troubles. If you just xcopy the image (or use ghost tools the same way you'd use to capture as smallest image as possible) at the cloned system launch you will notice that EWF is not working. If you execute EwfMgr commands it will report the it cannot find the EWF volume (and there it will refer to the EWF config volume that stores all the EWF configuration settings and, in case of EWF Disk mode, the overlay data). Obviosly, with the Windows standard tools (xcopy and etc.) you won't be even able to see the EWF partition. So another approach shuld be taken and here is a few I can think of:&lt;br /&gt;&lt;br /&gt;1) Use Ghost's -IR switch (or similar switch of another cloning tool if suported) when capturing the golden image. It forces the ghost to grab every raw data byte of the source disk vs going through the file system to copy only files as the ghost without IR switch does.&lt;br /&gt;Big disadvanges of this solution is that depending on the target device's hard disk setup you may end up with a GHO file with a huge size (ghost with IR switch doesn't know anything about files on the disk and capturing every single byte of the specified storage device). Also, this way you won't be able to operate and clone partitions, only entire disks.&lt;br /&gt;&lt;br /&gt;2) Create a tool that will copy over the hidden EWF partition to all the target devices. Something like WinHEX editor or any partition management tool that allows you to view and save the content of disk sectors would help you here. I typically use Paragon Partition Manager for that.&lt;br /&gt;This approach is quite complicated and not easy to automate without a 3rd party tool which may add some extra licensing to your device production.&lt;br /&gt;&lt;br /&gt;3) Have EWF disabled in the golden image and re-enable it on the cloned runtime very early at the first boot. You can then xcopy the image files to target devices or use Ghost the regular way (FS aware).&lt;br /&gt;However, this would only work if you re-create the EWF Config partition on the cloned image. Here is the command that will help you to accomplish that:&lt;br /&gt;&lt;em&gt;&lt;strong&gt;rundll32 ewfdll.dll, ConfigureEwf&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;- or -&lt;br /&gt;&lt;strong&gt;&lt;em&gt;rundll32 ewfdll.dll, ConfigureEwf Start&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;(both seem to have worked for me)&lt;br /&gt;&lt;br /&gt;You can launch this command with a FBA Generic command set up to run after the cloning phase (phase number &gt; 12000) or use &lt;em&gt;[HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce]&lt;/em&gt; key or Startup Menu item if the Explorer Shell is used in the runtime. Otherwise you can use &lt;em&gt;[HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon],"UserInit"&lt;/em&gt; key to add more command you want to run at run time. Just make sure to clean up that key and return its value to original (default) when the job is done. If you do all the commands from a batch file that will also add some .reg files that will do it.&lt;br /&gt;&lt;br /&gt;Obviously, after you created the EWF Config partition you will need to issue "&lt;em&gt;ewfmgr &lt;protected&gt;: -enable&lt;/em&gt;" command and reboot the target device so that EWF can take that command in affect. Again, all these commands are easy to combine in one batch script file.&lt;br /&gt;&lt;br /&gt;4) Switch to use EWF RAM Reg mode. After all, there is almost no advantages of EWF RAM mode over the RAM Reg mode (except the ability to use &lt;em&gt;-disable&lt;/em&gt; command). However, EWF with Disk Overlay has its own value that would be hard to replace with EWF RAM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-3162757998799699637?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/3162757998799699637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=3162757998799699637' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3162757998799699637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3162757998799699637'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-45-ewf-and-cloning.html' title='XPe tip #45: EWF and Cloning'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7112363688950210258</id><published>2007-05-25T15:11:00.000-07:00</published><updated>2007-05-25T15:19:55.321-07:00</updated><title type='text'>XPe tip #44: Where are the system shurtcuts?</title><content type='html'>Where the system shortcuts are coming from? Administrative Tools, Programs, Programs\Accessories (Accessibility, Communications, System Tools, Entertainment), Games, Messenger, Movie Maker, Wireless Network Setup Wizard, Remote Assistance, Windows Media Player?&lt;br /&gt;The answer is trivial - "&lt;strong&gt;Standard Start Menu Shortcuts&lt;/strong&gt;"component.&lt;br /&gt;&lt;br /&gt;Btw, that component is a great resource for those who wants to learn how to create shortcuts on XPe directly in TD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7112363688950210258?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7112363688950210258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7112363688950210258' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7112363688950210258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7112363688950210258'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-44-where-are-system-shurtcuts.html' title='XPe tip #44: Where are the system shurtcuts?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2058509617584422988</id><published>2007-05-25T15:08:00.000-07:00</published><updated>2007-05-25T15:11:07.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #43: CDFS/UDFS</title><content type='html'>Problems accessing the content of CD or DVD under XPe keep being &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/bf36f778b60d95a1/38d9da5d18121a3e?lnk=raot&amp;hl=en#38d9da5d18121a3e"&gt;posted &lt;/a&gt;in the newsgroup.&lt;br /&gt;&lt;br /&gt;The tip here is very simple - include the CDFS/UDFS components - CD/DVD file systems.&lt;br /&gt;This is surely going to work assuming you've got all the CD-ROM/DVD-ROM driver issues resolved first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2058509617584422988?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2058509617584422988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2058509617584422988' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2058509617584422988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2058509617584422988'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-43-cdfsudfs.html' title='XPe tip #43: CDFS/UDFS'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-8437064197010368633</id><published>2007-05-25T14:54:00.000-07:00</published><updated>2007-05-25T15:07:13.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #42: Media file metadata access</title><content type='html'>This interesting &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/7f4fe67e27781749/f4cf32b07c24a124?lnk=raot&amp;hl=en#f4cf32b07c24a124"&gt;post&lt;/a&gt; in the newsgroup led me to discovering another nasty bug of latest XP Embedded bits (SP2, FP2007).&lt;br /&gt;&lt;br /&gt;Basically the issue was that the poster was having troubles accessing the metadata of media files on an NTFS partition. More specifically, their script code that called to getDetailsOf method of the Shell.Application object was failing to return proper results but returned the success error code.&lt;br /&gt;&lt;br /&gt;The issue showed up when the developer moved to FP2007. First thought was the problem was there due to a missing component that could disappear (vs old builds) because of the major re-factoring Microsoft did in that Feature Pack.&lt;br /&gt;&lt;br /&gt;However, the source of the problem was in the new component that was added to the database update - "&lt;strong&gt;Windows Media Player 10.0&lt;/strong&gt;". The previous player components - "Windows Media Player 8.0" and "Windows Media Player 9.0" (this one is ghost component) - included the &lt;strong&gt;shmedia.dll&lt;/strong&gt; library but the Player 10 didn't. That library is actually responsible for parsing file content, that shell API are loading up, and extracting and parsing the metadata that file may contain. That metadata is heavily used by newest media file grouping feature of Explorer shell with Windows Media Player instead on XP system.&lt;br /&gt;&lt;br /&gt;Conclusion: make sure to include &lt;strong&gt;shmedia.dll &lt;/strong&gt;library and register it (it is a COM object so you want to use the regsvr32 tool at run time or simply add a FBA DLL/COM Registration resource command in TD.&lt;br /&gt;Note that the shmedia.dll library is surely in the XPe repository because of the previous versions of the player component.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-8437064197010368633?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/8437064197010368633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=8437064197010368633' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8437064197010368633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8437064197010368633'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-42-media-file-metadata-access.html' title='XPe tip #42: Media file metadata access'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4471873785360953396</id><published>2007-05-23T22:03:00.000-07:00</published><updated>2007-05-23T22:12:18.925-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #41: "Processor scheduling" registry setting</title><content type='html'>How to preset &lt;strong&gt;Processor scheduling&lt;/strong&gt; settings in TD?&lt;br /&gt;These settings you can get to from Control Panel--&gt;System--&gt;Advanced--&gt;Settings (Performance)--&gt;Advanced (Processor scheduling section).&lt;br /&gt;Answered &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/c34ccc7ee6bddfea/74c7e05fb6cf36e7?lnk=raot&amp;hl=en#74c7e05fb6cf36e7"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Processor scheduling settings are mapped to the following registry value:&lt;br /&gt;          &lt;em&gt; [HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl],"Win32PrioritySeparation"&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;You can overwrite this value in the Registry Data section of the "&lt;strong&gt;Client / Server Runtime (Console)&lt;/strong&gt;" component.&lt;br /&gt;&lt;br /&gt;This binary mask value should be set to (or just include) &lt;strong&gt;0x18&lt;/strong&gt; to optimize the system to use a greater share of processor time to run background services.&lt;br /&gt;&lt;br /&gt;The mask can actually be tuned much more precisely with setting particular bits of the value. More info on the bits meanings can be found &lt;a href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/29623.mspx"&gt;here&lt;/a&gt;.&lt;br /&gt;For instance. Clicking &lt;strong&gt;Background services&lt;/strong&gt; sets the value of this entry to 011000 (&lt;strong&gt;0x18&lt;/strong&gt;), and provides for longer, fixed-length processor intervals in which foreground processes and background processes get equal processor priority.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4471873785360953396?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4471873785360953396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4471873785360953396' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4471873785360953396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4471873785360953396'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-41-processor-scheduling.html' title='XPe tip #41: &quot;Processor scheduling&quot; registry setting'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1970923416850625549</id><published>2007-05-23T21:56:00.000-07:00</published><updated>2007-05-23T22:13:18.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #40: "Adjust for best performance" registry setting</title><content type='html'>How to preset &lt;strong&gt;Visual Effects&lt;/strong&gt; settings in TD? These settings you can get to from Control Panel--&gt;System--&gt;Advanced--&gt;Settings (Performance)--&gt;Visual Effects.&lt;br /&gt;Answered &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/c34ccc7ee6bddfea/74c7e05fb6cf36e7?lnk=raot&amp;hl=en#74c7e05fb6cf36e7"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Visual Effects settings are mapped to the following registry value:&lt;br /&gt;&lt;em&gt;       [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects],&lt;/em&gt;&lt;em&gt;"VisualFXSetting"&lt;/em&gt;.&lt;br /&gt;That flag should be set to 2 to optimize the system for best performance. Value 1 is for best appearance.&lt;br /&gt;&lt;br /&gt;The same value could be set under &lt;em&gt;HKEY_LOCAL_MACHINE&lt;/em&gt; branch to affect all user accounts (global policy). Or under &lt;em&gt;HKEY_USERS\.DEFAULT&lt;/em&gt; branch to effect the default user accounts as well as all other user accounts since on XPe they all use Default User settings for defaults during FBA.&lt;br /&gt;&lt;br /&gt;No component in TD brings in that registry value by default. It is probably getting [re]set during FBA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1970923416850625549?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1970923416850625549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1970923416850625549' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1970923416850625549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1970923416850625549'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-40-adjust-for-best-performance.html' title='XPe tip #40: &quot;Adjust for best performance&quot; registry setting'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-3141828713410323160</id><published>2007-05-23T21:41:00.000-07:00</published><updated>2007-05-23T21:54:13.211-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #39: Prevent BSOD from locking device</title><content type='html'>There was a topic we have covered in the newsgroup long time ago I thought I'd want to have listed here as a tip.&lt;br /&gt;&lt;br /&gt;We are all familiar with XP famous BSOD - blue screen of death - a stop error displayed after encountering a critical system error. BSOD on 2K/XP is basically first chance exception within the kernel space (the kernel code or a kernel driver) that the system cannot recover and therefore has to shutdown the system. Instead they first show the exception info and, if set up properly, dumping the memory to a crash dump file.&lt;br /&gt;&lt;br /&gt;How to prevent the system from showing BSOD? That may be important on an embedded device that is setup to be headless or does not require user interaction during normal hours of operation.&lt;br /&gt;&lt;br /&gt;Only way to do that I know of is by setting the following registry entry:&lt;br /&gt;&lt;em&gt;         [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl],"AutoReboot"=dword:&lt;/em&gt;1&lt;br /&gt;that is mapped to XP's Control Panel/System/Advanced/Settings (Startup &amp; Recovery)/System Failure/Check-Automatically Restart GUI element.&lt;br /&gt;&lt;br /&gt;This registry value belongs to "Computer Prototype" component and in TD can be set (modified) under HAL (PC) component registry data section (e.g., "Standard PC" or "Advanced Configuration and Power Interface (ACPI)").&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-3141828713410323160?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/3141828713410323160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=3141828713410323160' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3141828713410323160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3141828713410323160'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-39-prevent-bsod-from-locking.html' title='XPe tip #39: Prevent BSOD from locking device'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1289037320014247026</id><published>2007-05-20T21:19:00.000-07:00</published><updated>2007-05-20T21:36:15.069-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #38: Ramdisk drivers</title><content type='html'>Newbies on XPe often confuse the "Windows Ram Disk driver" component with a ramdisk that they may want to use a a temporarily file storage for things like Internet Explorer cache and etc. That component, however, is only a ramdisk driver that is used in RAM boot (Remote boot) scenarios and gets loaded by the loader to emulate the system running off a ramdisk (the entire image is copied to RAM and launched from there).&lt;br /&gt;More info about the RAM boot can be found &lt;a href="http://msdn2.microsoft.com/en-us/library/ms838543.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are quite many ramdisk driver for creating a device that can be used as a temporary storage available on the Web and created for Windows 2K/XP. For instance, the one from &lt;a href="http://www.picobay.com/projects/2006/06/how-to-make-windows-xp-ram-disk-drive.html"&gt;picobay.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, I prefer not dealing with extra software licensing on XPe and tend to use sample driver from sources like Microsoft, CodeProject.com, CodeGuru.com and such where I can always modify the driver to meet my system requirements or simply compile it and use for free.&lt;br /&gt;Here is a couple driver with their sources I used on XPe:&lt;br /&gt;    -  &lt;a href="http://support.microsoft.com/?kbid=257405"&gt;Microsoft RamDisk sample driver&lt;/a&gt;.&lt;br /&gt;Note: this one was created for Windows 2000 but an extremely easy to port to XP and the require porting steps are mentioned in the knowledge base article linked.&lt;br /&gt;&lt;br /&gt;    - &lt;a href="http://www.codeguru.com/Cpp/W-P/system/devicedriverdevelopment/article.php/c5789"&gt;CodeGuru's driver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note that for both drivers there are some settings (the ramdisk size and so on) that you may want to preset in the registry while integrating into your XPe.&lt;br /&gt;&lt;br /&gt;Honestly I have happened to use other 3rd party ramdisk drivers on XPe but those were tied to customer's SKU's, required an additional license costs and not to be listed here. More &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/search?hl=en&amp;group=microsoft.public.windowsxp.embedded&amp;amp;q=ramdisk+driver&amp;amp;qt_g=Search+this+group"&gt;ramdisk driver&lt;/a&gt; sources I mentioned in the newsgroup.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1289037320014247026?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1289037320014247026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1289037320014247026' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1289037320014247026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1289037320014247026'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-38-ramdisk-drivers.html' title='XPe tip #38: Ramdisk drivers'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1967207183459611642</id><published>2007-05-20T16:04:00.000-07:00</published><updated>2007-05-25T14:52:23.203-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #37: mpnotify.exe is not held by any component</title><content type='html'>There was an important and interesting &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/dfc4f4d4a575787f?hl=en"&gt;post&lt;/a&gt; in the newsgroup recently that I have missed due to the MEDC and WinHEC conference attending.&lt;br /&gt;&lt;br /&gt;The problem posted was about some API function (such as NPLogonNotify) not working under a full blown XPProEmulation XPe image. Obviously the issue was there not due to a missing component since XPProEmulation virtually includes all software components from the XPe database.&lt;br /&gt;From the newsgroup thread you will see that the debugging the poster team has done showed that their own credential manager was working fine on Desktop OS and only failed to get notifications under XPe with interactive logon.&lt;br /&gt;&lt;br /&gt;It appeared that the issue was there due to missing &lt;strong&gt;mpnotify.exe&lt;/strong&gt; - the executable that is responsible for issuing Winlogon notification to registered network credential providers. The NPLogonNotify won't work if mpnotify.exe is not running (e.g., missing or crashed). Basically, it is the mpnotify.exe process who calls the NPLogonNotify function of the network provider .dll file.&lt;br /&gt;The above fact is perfectly documented in this Microsoft Knowledge Base &lt;a href="http://support.microsoft.com/kb/885423"&gt;article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The problems with XP Embedded is that although the mpnotify.exeis in the XPe Repository it doesn't belong to any component. It is basically left out from the component database which makes it harder to include in the image if you don't know what is required to get Network Providers to work and being notified by Winlogon.&lt;br /&gt;&lt;br /&gt;A couple more useful links for the proper credential manager Dll integration into your image:&lt;br /&gt;- &lt;a href="http://msdn2.microsoft.com/en-us/library/aa374737.aspx"&gt;Required authentication registry keys&lt;/a&gt;&lt;br /&gt;- A very good guide written for &lt;a href="http://www.codeproject.com/w2k/LoginFilter.asp"&gt;Logon Filters&lt;/a&gt; - a sample credential manager from CodeProject.com.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1967207183459611642?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1967207183459611642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1967207183459611642' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1967207183459611642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1967207183459611642'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-37-mpnotifyexe-is-not-held-by.html' title='XPe tip #37: mpnotify.exe is not held by any component'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4986826543452276098</id><published>2007-05-19T22:38:00.000-07:00</published><updated>2007-05-19T23:48:06.758-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #36: Changing IP with EWF/FBWF On</title><content type='html'>There was an &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/9e88d530b3b32ce2/4cbfe15242898bb3?lnk=raot&amp;hl=en#4cbfe15242898bb3"&gt;interesting topic&lt;/a&gt; recently covered in the newsgroup where I had to spend some time to answer the poster questions and got some new knowledge (as very usual while answering other's questions in the newsgroup, btw :-) ) about Microsoft's Registry Filter component.&lt;br /&gt;&lt;br /&gt;I won't go into details of that conversation (read in on the newsgroup archive if you wish) but I will just summarize the task, the problem and the solution.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Prerequisites&lt;/u&gt;: We have an embedded device running XP Embedded image with EWF or FBWF filter protecting the system partition including system registry hives.&lt;br /&gt;&lt;br /&gt;The &lt;u&gt;task&lt;/u&gt;: For a person administrating the device (IT, end user, whoever with the sufficient rights to access the network stack on the device) it is required to change system network settings to either switch to required static IP or, if already a static IP used, change the IP address.&lt;br /&gt;&lt;br /&gt;The &lt;u&gt;problem&lt;/u&gt;: With the write filter protecting the system registry it will be required to commit the entire system registry hive in order to make the IP address change persistent. With EWF it is even worse - you have to commit the entire system volume to accomplish that. The bad part there is that along with the IP changed you will commit all user modifications he might have done on the device and in the system registry. Often, those modifications are undesirable and lead to an unstable device (the beauty of the WF protection of the system volume is getting lost). I am not even touching the sensitive area of viruses and malicious software that a networked device might be exposed to.&lt;br /&gt;&lt;br /&gt;The &lt;u&gt;solution&lt;/u&gt;: What if we only commit the changes related to the IP settings in registry (what those are? see below...) and leave the system with the fully protected system volume yet.&lt;br /&gt;Yes, it is possible with the component called &lt;a href="http://msdn2.microsoft.com/en-us/library/aa940857.aspx"&gt;Registry Filter&lt;/a&gt; which has become public within Feature Pack 2007 (there was a QFE for SP2 release that brought in the Registry Filter but that QFE was only available to OEMs).&lt;br /&gt;&lt;br /&gt;The Registry Filter was only created by Microsoft to fix the famous issues with &lt;a href="http://km-dev.blogspot.com/2007/04/xpe-tip-33-domain-security-key.html"&gt;Domain Secret Key&lt;/a&gt; and TSCAL (license for Terminal Server client). However, the way the component works allows you (undocumentaly, of course) to use it in the purpose of working around some other issues with Write Filter protecting the system volume.&lt;br /&gt;&lt;br /&gt;The way Registry Filter works is that it allows you to specify registry keys to make them persistent across reboots while the write filter is ON. Basically Registry Filter creates and initializes a file-backed ramdisk - the hidden system regfData file under the root of the system volume. On that ramdisk it stores files that contain the selected key contents.&lt;br /&gt;&lt;br /&gt;My suspicion (as I indicated &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/8cc8bf190c9773f4/b8043e1ee49ca97a?hl=en#b8043e1ee49ca97a"&gt;here&lt;/a&gt;) is that the way the \regfData gets away from the EWF protection is through a mechanism similar to the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms932913.aspx"&gt;EwfMgrCommitFile&lt;/a&gt;. On FBWF, of course, it is much easier to by-pass the protection for the selected file since this filter is file system aware and doesn't require a hack like the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms932913.aspx"&gt;EwfMgrCommitFile&lt;/a&gt; API.&lt;br /&gt;&lt;br /&gt;Now, when we know how the Registry Filter works, lets try to use its functionality to "unprotect" other registry keys we may need to may persistent across reboots with the write filter enabled on the system volume and system registry hives.&lt;br /&gt;Sample registry entries that have to be added to your XPe image at the design time (at run time of design) I already &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/e4cae7c13b0c620b?hl=en&amp;amp;"&gt;showed in the newgroup&lt;/a&gt;. (Note: now we know the time zone info is &lt;strong&gt;not&lt;/strong&gt; the right key for monitoring because of the way Registry Filter gets started - it gets started after the system checks for time)&lt;br /&gt;Here is a sample for reference:&lt;br /&gt;&lt;em&gt;[HKEY_LOCAL_MACHINE\ControlSet001\Services\RegFilter\Parameters\MonitoredKe&amp;shy;ys\2]&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"ClassKey"="HKLM"&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"FileNameForSaving"="YourFileName.rgf"&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"RelativeKeyName"="Software\YourRegistryBranch"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;But what are the keys that have to be set for monitoring by Registry Filter to make the IP change persistent?&lt;br /&gt;Initially I thought these:&lt;br /&gt;&lt;em&gt;[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{&lt;interface&gt;}],"IPAddress"&lt;/em&gt;&lt;br /&gt;&lt;em&gt;and&lt;/em&gt;&lt;br /&gt;&lt;em&gt;[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{&lt;interface&gt;}\Parameters\Tcpip],"IPAddress"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;But after I've done some tcpip driver stack debugging it is clear to me that the first key is the important one. The second will be auto-reset by the system (tcpip driver will refresh the values there grabbing the values from the first key).&lt;br /&gt;&lt;br /&gt;So, cool, this means that we just have to add in registry at run time something like the following and it should work:&lt;br /&gt;&lt;em&gt;[HKEY_LOCAL_MACHINE\ControlSet001\Services\RegFilter\Parameters\MonitoredKe&amp;shy;ys\2]&lt;br /&gt;"ClassKey"="HKLM"&lt;br /&gt;"FileNameForSaving"="TcpIp.rgf"&lt;/em&gt;&lt;br /&gt;&lt;em&gt;"RelativeKeyName"="SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{&lt;interface&gt;}"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Note1: The CurrentControlSet is used here correctly. But in case you like the actual ControlSet00X key please make sure you work with the right one that gets used for the hardware configuration you are working with (typically the ControlSet001 on the XPe images by default).&lt;br /&gt;Note2: Replace the interface GUID with the real GUID you can read off the registry at run time and that gets generated unique for your NIC adapter and interface.&lt;br /&gt;&lt;br /&gt;The &lt;u&gt;problem #2&lt;/u&gt;: No, the above didn't work and that is what the initial poster indicated.&lt;br /&gt;The IP gets changed and the system is ping'able. However, as soon as you reboot the &lt;strong&gt;ipconfig.exe&lt;/strong&gt; tool will report the old IP address that you had before the IP change. While the Tcpip GUI (the UI you get to when you go to the network connection properties) or &lt;strong&gt;netsh &lt;/strong&gt;commands report the new IP. I should also note here that the actual IP of the system that you can feel on the network is still the old IP.&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;The &lt;u&gt;upgraded solution&lt;/u&gt;: After some debugging I've done for the tcpip stack on XP as well as the Registry Filter and EWF components the issue appeared to be related to the loading order of the filter driver. Let me quote myself from the newsgroup.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;First I created an image where I could perfectly repro the problem (Minlogon, netsh, EWF, RegFilter). Then I debugged some system stacks to understand what's going on there when we change the IP with the RegFilter on and set to monitor the keys I mentioned earlier. (I picked up EWF vs FBWF to simplify the debugging, having FBWF there won't change the picture)&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;I must admit the result was a bit surprising to me. Despite the fact that the behavior of the protected system with IP changed and rebooted was quite strange - no sync in the results from &lt;strong&gt;ipconfig.exe&lt;/strong&gt; tool and "&lt;strong&gt;netsh interface ip show address&lt;/strong&gt;" command (the same as you'd do with TCPIP GUI) - the source of the problem was not in the Tcpip stack or the registry keys picked up for the monitoring. The tcpip driver (or a driver from the ipv4 stack) indeed reads the network adapters info into a buffer (link list) at initialization from the registry's Tcpip\Interfaces key. This, of course, includes the IP address settings. When you do "&lt;strong&gt;ipconfig /all&lt;/strong&gt;" it doesn't really go into the registry again but rather queries the driver for that info stored in the cache (buffer). While the &lt;strong&gt;netsh&lt;/strong&gt; commands are more "dynamic" and will scan and return the results from the registry.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;It is important to understand that RegFilter doesn't make the monitored keys transparent to the registry hives. The RegFilter rather applies the new registry values - the values that were saved in the monitored key hives on the protected system volume's ramdisk - to the image's registry hives at the next boot time. Some time during the driver init it loads the ramdisk and reads the files on it. Then it sets the actual values in registry to whatever values it reads from the file contents on ramdisk.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;The tcpip driver will populate the internal stack buffer very early during the system boot. Looks like the initialization actually happens before the RegFilter is loaded. This leads to the Tcpip structures populated with the old data but the registry info already reflected the new data (laid out by the RegFilter) after the boot. So we end up with the IP addresses reported out of sync between the ipconfig and the registry.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;To summarize the above, the real problem there seems to be that the Regfilter and one of the drivers from Tcpip stack belong to the same driver load group. Without the RegFilter enabled the IP would be changed properly (assuming the change can be flushed). This fact is extremely easy to prove with the following simple experiment.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Forgot for a minute about the RegFilter. In fact remove the Tcpip related registry paths from its MonitorKeys branch, commit EWF and gracefully shutdown the image (now the RegFilter doesn't "unprotect" the tcpip keys). Load up the image SYSTEM hive offline (open it with a regedit on a XP Pro machine). Go to the [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{&lt;interface&gt;}] key and modify the value of the "IPAddress" property there. Unload the hive and boot to the embedded image and verify that the address has changed and is in sync between ipconfig and netsh results (or GUI). Note that you don't even have to mess with the [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\{&lt;interface&gt;}\Parameters\Tcpip] key as it will be automatically updated during the boot (tcpip driver does that at the init time).&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;It is also easy to confirm with a hex editor that the ramdisk image from the runtime contains the new registry value (new IP address) but the system registry hive has gotten the old one (and this is ok when you think about the Regfilter architecture and design).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;So, what's left to fix the solution we created is to change the loading order of the interfering drivers. We can't mess much around the RegFilter driver - it is very dependent on the EWF/FBWF and, the same time, must be launched early at the system boot. So we only can fix the issue by moving the tcpip driver to load it later than the RegFilter and thus pick up the right values from registry hives.&lt;br /&gt;&lt;br /&gt;The easiest way, perhaps, to accomplish that would be starting the tcpip driver by the Service Control Manager (SCM) instead of the kernel. The following value would do that:&lt;br /&gt;&lt;strong&gt;&lt;em&gt;[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip],"Start"=dword:2&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;That will put the driver in the auto-start group (started by the service control manager) instead of the system started (kernel or loader started).&lt;br /&gt;This is a pretty safe change unless you've got some custom drivers in your image that demand the network connectivity (IP) very early at the system boot.&lt;br /&gt;&lt;br /&gt;With the changes above committed (if you mess with all this at run time), you can try to change the IP and reboot (without an extra commit) and the IP should be the correct one reported by the &lt;strong&gt;netsh&lt;/strong&gt; (or GUI) and the &lt;strong&gt;ipconfig&lt;/strong&gt; as well. At least this is what I am seeing working here.&lt;br /&gt;&lt;br /&gt;Just a side note: Domain Secret Key and TSCAL issues were "easier" to fix for Microsoft with the RegFilter approach since those keys are only read late at the boot process (by Winlogon and Terminal Services components).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4986826543452276098?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4986826543452276098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4986826543452276098' title='51 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4986826543452276098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4986826543452276098'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-26-changing-ip-with-ewffbwf-on.html' title='XPe tip #36: Changing IP with EWF/FBWF On'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>51</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2549449160873352709</id><published>2007-05-10T11:44:00.000-07:00</published><updated>2007-05-10T11:52:43.493-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCE tips'/><title type='text'>MCE tip #3: Filter "More Programs" items</title><content type='html'>I had a need to hide some items under "More Programs" menu in Vista Media Center app.&lt;br /&gt;Unfortunately there appeared to be no way to create a real filter that would help me to apply some "programmatic" criteria to such area of MCE. However, I just found the simplest way to hide items there. All you need to do is to remove the entry points (application registered in MCE) from the following key:&lt;br /&gt;           &lt;em&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Extensibility\Entry Points]&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;For instance, I knews that the following registry key:&lt;br /&gt;           &lt;em&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Media Center\Extensibility\Entry Points\{115EADF1-41C4-471b-8FE5-7A52B91BFE75}]&lt;/em&gt;&lt;br /&gt;is the entrypoint for Chess Game item of the "More Programs" menu. It is easy to prove if you look under the key and find the "Run" value there. It points to &lt;em&gt;%ProgramFiles%\Microsoft Games\Chess\ChessMCE.lnk&lt;/em&gt; shortcut which is obviously responsible for launching the Chess Game.&lt;br /&gt;All I had to do to hide the Chess is to remove the entrypoint registry key.&lt;br /&gt;&lt;br /&gt;The main reason I wanted to hide the game items (or any other registered program items) is that some of them &lt;strong&gt;still&lt;/strong&gt; don't comply to the 10 foot UI requirements. Some games are totally 2' UI based and require mouse and keyboard - not sure who decided to put those in the MCE which is supposed to target TV users as well (and hopefully soon will &lt;strong&gt;not&lt;/strong&gt; target PC users!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2549449160873352709?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2549449160873352709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2549449160873352709' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2549449160873352709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2549449160873352709'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/mce-tip-3-filter-more-programs-items.html' title='MCE tip #3: Filter &quot;More Programs&quot; items'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-762045343576359855</id><published>2007-05-09T23:54:00.000-07:00</published><updated>2007-05-19T23:48:21.305-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCE tips'/><title type='text'>MCE tip #2: How to launch Media Center app directly to the setup screen</title><content type='html'>There a re a few places on the web (e.g., &lt;a href="http://thegreenbutton.com/forums/thread/27033.aspx"&gt;The Green Button&lt;/a&gt;, &lt;a href="http://blog.mediacentersandbox.com/AdditionalWindowsMediaCenterShellCommandLineSwitches.aspx"&gt;Media Center Sandbox Blog&lt;/a&gt;, &lt;a href="http://www.driverheaven.net/windows-vista-forum/134505-making-media-center-vista-start-live-tv-once.html"&gt;driverheaven.net&lt;/a&gt;, etc.) that discussed various way how to launch Media Center and direct it to particular applications. Two most command ways - command line arguments (directmedia and homepage switches) or sending a Win32 message to the MCE window with certain wParam and lParam settings.&lt;br /&gt;&lt;br /&gt;I have read all the info and played with it myself. Too many limitations there. Basically you can only redirect the MCE to some [very few] applications - to Live TV, Video Library, etc..&lt;br /&gt;&lt;br /&gt;A hacky way I tried - to grab the XML resource names off the MCE binaries - didn't work well. Most of the XML pages there require some machine state variables being passed from the main application entrypoint and this makes the MCE unstable. Mostly it just crashes at the launch.&lt;br /&gt;&lt;br /&gt;Only helpful XML page I found I could bring up that way, that wasn't mentioned on the Web, was the Media Center Setup page. All you have to do is to launch MCE with the following command line:&lt;br /&gt;&lt;em&gt;&lt;strong&gt;%SystemRoot%\ehome\ehshell.exe /homepage:Options.SetupMediaCenter.xml /PushStartPage:Tru&lt;/strong&gt;&lt;/em&gt;e&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-762045343576359855?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/762045343576359855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=762045343576359855' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/762045343576359855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/762045343576359855'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/mce-tip-2-how-to-laucnh-media-center.html' title='MCE tip #2: How to launch Media Center app directly to the setup screen'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1983184884459519274</id><published>2007-05-09T23:23:00.000-07:00</published><updated>2007-05-09T23:47:17.897-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCE tips'/><category scheme='http://www.blogger.com/atom/ns#' term='MCE news and info'/><title type='text'>Extending and fixing MCE</title><content type='html'>What you can do if you want to change some functional behaviour of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MCE&lt;/span&gt; (Media Center application) or add some more functionality there? Or what you can do if you need to fix some 2 or 10 foot &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;UI&lt;/span&gt; issues of the Media Center app?&lt;br /&gt;&lt;br /&gt;Well, the only way I could come up with is - a global hook or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Dll&lt;/span&gt;-injection. There are a few techniques known in Win32 world (I wish those exist in Windows CE as well :-) ) how to do the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Dll&lt;/span&gt; injections (from writing to another process address space to the supported global hooks). Despite the fact that it may be a dangerous implementation (stability issues, lowering security, etc.) this is the only way that seems viable. Two main reasons:&lt;br /&gt;- to have a better and faster implementation for your own monitoring agent application you'd probably want to stick to C/C++ to easier the access to Win32 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;APIs&lt;/span&gt; (P-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Invoke's&lt;/span&gt; are costly and require lots of coding for missing header). &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MCE&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SDK&lt;/span&gt; doesn't allow you to write add-ins in native C++. (or perhaps it does but I didn't investigate this deep enough)&lt;br /&gt;- too many limitations there on background add-ins for Vista &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MCE&lt;/span&gt;. You will always lose the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;MCE&lt;/span&gt; launch moment and some other events as well.&lt;br /&gt;&lt;br /&gt;I have implemented a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MCE&lt;/span&gt; hook-up agent that keeps monitoring the Media Center app on a complex of things - messages, windows, positions, etc. - including WM_INPUT (raw input messages), keyboard and mouse messages and etc.&lt;br /&gt;&lt;br /&gt;A piece of advice - if you are playing with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;MCE&lt;/span&gt; on Vista, try to stay away from a service implementation for your app. On Vista, services are running in a separate, isolated Windows session (session 0) and it may take you an effort to implement the cross-session interface between your hook into &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;MCE&lt;/span&gt; and the service. (not impossible but just over-complicates the implementation)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1983184884459519274?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1983184884459519274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1983184884459519274' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1983184884459519274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1983184884459519274'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/extending-and-fixing-mce.html' title='Extending and fixing MCE'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4986696185813534989</id><published>2007-05-08T15:32:00.000-07:00</published><updated>2007-05-08T15:36:27.609-07:00</updated><title type='text'>MVP Heroes Campaign</title><content type='html'>My photo got published on MSDN again :-)&lt;br /&gt;I got a chance to participate in &lt;a href="http://msdn2.microsoft.com/en-us/embedded/aa731159.aspx"&gt;MVP Heroes Campaign&lt;/a&gt; program. My take-out from the campaign - Microsoft has an awesome Studio!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4986696185813534989?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4986696185813534989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4986696185813534989' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4986696185813534989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4986696185813534989'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/mvp-heroes-campaign.html' title='MVP Heroes Campaign'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5118780458119552590</id><published>2007-05-07T22:39:00.000-07:00</published><updated>2007-05-07T22:56:18.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #35: Language Packs</title><content type='html'>Recently I have forwarded a reply from Microsoft to the newsgroup in response to the &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/1063ebd374b29526/9b1ad278b4c2956a?lnk=raot&amp;hl=en#9b1ad278b4c2956a"&gt;question&lt;/a&gt; whether XPe supports Ukrainian MUI. The reply was negative - no, XPe doesn't have the Ukrainian language pack despite of the fact that there is XP Pro Language Pack exists for Ukraine locale.&lt;br /&gt;&lt;br /&gt;Basically this means not all Language Packs that have been created for XP Professional were "ported" (componentized) for XP Embedded. Complete list of all the Language Packs for XPe (RTM, SP1, SP2) can be found &lt;a href="http://msdn2.microsoft.com/en-us/embedded/aa731280.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5118780458119552590?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5118780458119552590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5118780458119552590' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5118780458119552590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5118780458119552590'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/05/xpe-tip-35-language-packs.html' title='XPe tip #35: Language Packs'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5670852816804337537</id><published>2007-04-24T23:55:00.000-07:00</published><updated>2007-04-25T00:06:12.368-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>FP2007: What is it?</title><content type='html'>I liked that straightforward &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/cda62e2cc9b8b010/ba6c2b3236a0fdee?lnk=raot&amp;hl=en#ba6c2b3236a0fdee"&gt;question&lt;/a&gt; posted in the newsgroup.&lt;br /&gt;&lt;br /&gt;In fact, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;FP&lt;/span&gt;2007 - Feature Pack 2007 - is a nice addition to the SP2 release of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XP&lt;/span&gt; Embedded tools. It does have some new features that were never rolled out as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;QFEs&lt;/span&gt; for SP1.&lt;br /&gt;&lt;br /&gt;More info on the Pack can be found on the &lt;a href="http://blogs.msdn.com/embedded/archive/2006/07/10/660998.aspx"&gt;product team blog&lt;/a&gt;.&lt;br /&gt;The entire &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XPe&lt;/span&gt; &lt;a href="http://msdn2.microsoft.com/en-us/library/bb331822.aspx"&gt;documentation tree&lt;/a&gt; has been moved to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;FP&lt;/span&gt;2007.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;FP&lt;/span&gt;2007 is free for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XPe&lt;/span&gt; SP2 Toolkit owners.&lt;br /&gt;Non-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;eval&lt;/span&gt; version is out there on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Extranet&lt;/span&gt; website of Microsoft (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ECE&lt;/span&gt;). Used to be available on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;OEM&lt;/span&gt; Secure Website that was unfortunately &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;deprecated&lt;/span&gt; by Microsoft.&lt;br /&gt;&lt;br /&gt;The best thing I loved about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;FP&lt;/span&gt;2007 is the stability of the toolkit. I can finally enjoy working with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;XPProEmulation&lt;/span&gt; and other huge projects and the development tools are not crashing. I have checked - it only required to change a few lines of VB script code that runs within TD (Target Designer) to fix the VB memory related issues while loading a huge number of components.&lt;br /&gt;However, there are still some bugs in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;FP&lt;/span&gt;2007 about the toolkit. For instance, it doesn't like setting big &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;pagefile&lt;/span&gt; on some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;ACPI&lt;/span&gt; HAL components. Please refer to &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/c9f704ed2b460fb8?hl=en"&gt;this thread&lt;/a&gt; for more info posted on that bug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5670852816804337537?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5670852816804337537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5670852816804337537' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5670852816804337537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5670852816804337537'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/fp2007-what-is-it.html' title='FP2007: What is it?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-8080987718125212871</id><published>2007-04-24T22:33:00.000-07:00</published><updated>2008-01-23T10:18:20.227-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #34: Domain Security Key</title><content type='html'>What is the Domain Secret Key that many times was mentioned in the &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/search?hl=en&amp;amp;group=microsoft.public.windowsxp.embedded&amp;amp;q=Domain+Secret+Key&amp;amp;qt_g=Search+this+group"&gt;newsgroup&lt;/a&gt; and even required a special fix for EWF to make persistent the key in domain environment? Going forward quickly want to mention the EWF fix - &lt;a href="http://msdn2.microsoft.com/en-us/library/aa940857.aspx"&gt;Registry Filter&lt;/a&gt; that allow to make some registry keys persistent with EWF enabled and protecting system volume including registry hives.&lt;br /&gt;&lt;br /&gt;I am actually not sure who came up with the name "Domain Secret Key". Perhaps, XPe product guys :-) Domain Secret Key is in fact nothing more but the machine's computer account password in a domain. Basically machines - PCs in the network - can be made members of groups just like users can. They log in to the domain just as users do by proving knowledge of their master key, which each machine that is a member of a domain stores in its registry.&lt;br /&gt;&lt;br /&gt;So where does Windows store that key? That is very easy to find out (Web Search or the Registry Filter component's script) - [&lt;strong&gt;&lt;em&gt;HKLM\Security\Policy\Secrets\$MACHINE.ACC&lt;/em&gt;&lt;/strong&gt;]. If you want to explore that key, run the registry editor as LocalSystem account (the easiest way to do this is from an administrative command prompt; type "&lt;em&gt;at time /interactive regedit.exe&lt;/em&gt;", substituting whatever time is appropriate: make it one minute in the future, or use &lt;em&gt;atnow.exe&lt;/em&gt; tool I posted the info about in an earlier blog post). Once regedit fires up, carefully look at the subkeys under [&lt;em&gt;HKLM\Security\Policy\Secrets&lt;/em&gt;]. In this very key Windows stores a lot of secrets that need to be kept in plaint text for further usage, including service account passwords. You're looking at the machine's password cache, aka LSA private data store, and if the machine is a domain participant, you should see a subkey called $MACHINE.ACC, where the machine's master key lives in.&lt;br /&gt;&lt;br /&gt;Why Registry Filter was requested? Specifically to fix the Domain Secret Key issue (and one more key issue irrelevant to this post). In domain environment the default policy is to change the computer account password every 30 days. If EWF is enabled, after 30 days you may end up with the device not being able to logon to the same domain it has joined to. So the Domain Secret Key needs to be made persistent in registry to avoid password age issues in domain environment.&lt;br /&gt;&lt;br /&gt;EWF Registry Filter creates and initializes a file-backed ramdisk used. On that ramdisk it stores files that contain the selected key contents. The secret policy protection key file is named MacAcc.rgf.&lt;br /&gt;&lt;br /&gt;Below is just my idea on how things could be fixed if no Registry Filter was acceptable.&lt;br /&gt;&lt;br /&gt;Using device's Local Security Policies you can change the password age:&lt;br /&gt;[&lt;em&gt;HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters&lt;/em&gt;],"&lt;em&gt;MaximumPasswordAge&lt;/em&gt;"=&lt;em&gt;dword:&lt;days&gt;&lt;/em&gt; (default &lt;strong&gt;30&lt;/strong&gt; days)&lt;br /&gt;&lt;br /&gt;You can also disable the password change completely:&lt;br /&gt;[&lt;em&gt;HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters&lt;/em&gt;],"&lt;em&gt;DisablePasswordChange&lt;/em&gt;"=&lt;em&gt;dword:1&lt;/em&gt;&lt;br /&gt;Or refuse to domain controller's change of the computer password:&lt;br /&gt;[&lt;em&gt;HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters&lt;/em&gt;],"&lt;em&gt;RefusePasswordChange&lt;/em&gt;"=&lt;em&gt;dword:1&lt;/em&gt;&lt;br /&gt;Corresponding local security policies are:&lt;br /&gt;Domain Member: &lt;strong&gt;Maximum machine account password age&lt;/strong&gt; (MaximumPasswordAge)&lt;br /&gt;Domain Member: &lt;strong&gt;Disable machine account password changes&lt;/strong&gt; (&lt;em&gt;DisablePasswordChange&lt;/em&gt;)&lt;br /&gt;Domain Controller: &lt;strong&gt;Refuse machine account password changes&lt;/strong&gt; (&lt;em&gt;RefusePasswordChange&lt;/em&gt;)&lt;br /&gt;&lt;br /&gt;You can see them if you launch &lt;strong&gt;gpedit.msc&lt;/strong&gt; (&lt;em&gt;Group Policy Editor&lt;/em&gt;) and go to &lt;strong&gt;Local Computer Policy--&gt;Computer Configuration--&gt;Windows Settings--&gt;Security Settings--&gt;Local Policies--&gt;Security Options&lt;/strong&gt;.&lt;br /&gt;&lt;p&gt;I think in domain environment those policies are getting pushed to clients from domain controller. So a domain admin can always change those on the server side before turning on the policy on multiple clients.&lt;/p&gt;&lt;p&gt;Some more info you can find in the following MS KB articles: &lt;a href="http://support.microsoft.com/kb/175468"&gt;KB175468 - Effects of machine account replication on a domain&lt;/a&gt;, &lt;a href="http://support.microsoft.com/kb/154501"&gt;KB154501 - How to disable automatic machine account password changes&lt;/a&gt;, &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/0825816c-94e5-4a7f-be42-cbad6be4be501033.mspx"&gt;TechNet article about MaximumPasswordAge&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-8080987718125212871?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/8080987718125212871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=8080987718125212871' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8080987718125212871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8080987718125212871'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-33-domain-security-key.html' title='XPe tip #34: Domain Security Key'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5553689848553056210</id><published>2007-04-22T15:37:00.000-07:00</published><updated>2007-04-22T15:45:13.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #33: New hardware UI</title><content type='html'>What component is responsible for the UI you see when a new hardware is attached and detected on your target PC?&lt;br /&gt;The answer is simple - newdev.dll - Add Hardware Device Library. The newdev.dll library can be brought in your image if you add "&lt;strong&gt;Add Hardware Control Panel&lt;/strong&gt;" component.&lt;br /&gt;&lt;br /&gt;That library implements all the GUI for the Add New Hardware wizard. It is also getting called from &lt;strong&gt;Device Manager&lt;/strong&gt; when you are trying to Update a driver. It is interesting though the Device Manager does not seem to explicitly depend on the Add Hardware Control Panel component or, at least, newdev.dll (as a rawdep). I'd call this a bug.&lt;br /&gt;&lt;br /&gt;If the newdev.dll removed, it gives you an image that is deaf to installing new hardware. Very useful feature for headless devices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5553689848553056210?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5553689848553056210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5553689848553056210' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5553689848553056210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5553689848553056210'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-33-new-hardware-ui.html' title='XPe tip #33: New hardware UI'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2061045742347329113</id><published>2007-04-21T21:00:00.000-07:00</published><updated>2007-04-22T15:46:43.750-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #32: Best practices for power interrupt safety on headless devices</title><content type='html'>What if you are creating a headless device (truly headless - with no VGA - or just with no console devices attached such as keyboard and mouse) and you want to make sure the OS runs stable and reliable if an power interrupt occurs.&lt;br /&gt;&lt;br /&gt;Below is list of things you may want to look at in the XPe documentation or that make common sense.&lt;br /&gt;&lt;br /&gt;- Use UPS (Uninterpretable Power Source).&lt;br /&gt;&lt;br /&gt;- Make use of XPe Write Filters: EWF/FBWF - protecting the storage media with write filters will make it more reliable for the system to recover: &lt;a href="http://msdn2.microsoft.com/en-us/library/ms912906.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms912906.aspx&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/aa940926.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa940926.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Headless support - this is what you may need if no console devices are attached to or supported by your hardware: &lt;a href="http://msdn2.microsoft.com/en-us/library/ms932872.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms932872.aspx&lt;/a&gt;.&lt;br /&gt;Also, it may be a good idea to remove newdev.dll library (&lt;strong&gt;Add Hardware Control Panel&lt;/strong&gt; component) from your image so that there is no GUI fired up if new hardware is attached to the target device.&lt;br /&gt;&lt;br /&gt;- Don't include Safe Mode and Dr. Watson components in your image.(&lt;a href="http://msdn2.microsoft.com/en-us/library/ms940820.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms940820.aspx&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;- Setup the system crash dump procedure to restart the PC automatically when a GPF occurs. Set the following reg.entry:&lt;br /&gt;&lt;em&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl],"AutoReboot"=dword:1&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;- Get rid of all [most of] system popups and message boxes that may get your system GUI unintentionally locked:&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/embedded/aa731206.aspx"&gt;http://msdn2.microsoft.com/en-us/embedded/aa731206.aspx&lt;/a&gt;,&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms933122.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms933122.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- It often makes sense to create your own custom shell for the target XPe OS where you can control the GUI behavior (to make it more "headless compliant") and get rid of Explorer Shell that is not really headless friendly: &lt;a href="http://msdn2.microsoft.com/en-us/library/ms913692.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms913692.aspx&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2061045742347329113?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2061045742347329113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2061045742347329113' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2061045742347329113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2061045742347329113'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-32-best-practices-for-power.html' title='XPe tip #32: Best practices for power interrupt safety on headless devices'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-587273312692325186</id><published>2007-04-20T09:50:00.000-07:00</published><updated>2007-04-20T10:00:27.366-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #31: Wallpaper change</title><content type='html'>Want to change the wallpaper of your Desktop? Just follow this procedure:&lt;br /&gt;&lt;br /&gt;The registry entry you want to preset in TD is:&lt;br /&gt;&lt;em&gt;  [HKEY_CURRENT_USER\Control Panel\Desktop],"Wallpaper"=Reg_sz:"path to image"&lt;path&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;To affect all users:&lt;br /&gt;&lt;em&gt;   [HKEY_USERS\.DEFAULT\Control Panel\Desktop],"Wallpaper"=Reg_sz:&lt;path&gt;&lt;/em&gt;"path to image"&lt;br /&gt;Note: This entry will also be used as wallpaper in Winlogon time.&lt;br /&gt;&lt;br /&gt;That registry value can be overwritten in the registry section of "Win32 API - User" component.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-587273312692325186?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/587273312692325186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=587273312692325186' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/587273312692325186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/587273312692325186'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-31-wallpaper-change.html' title='XPe tip #31: Wallpaper change'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2378829756983849350</id><published>2007-04-19T12:24:00.000-07:00</published><updated>2007-04-19T12:27:29.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MEDC 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='MEDC'/><title type='text'>MEDC 2007 is coming..</title><content type='html'>&lt;a href="http://www2.blogger.com/www.medc2007.com"&gt;MEDC 2007&lt;/a&gt; is coming! I am anxious to go there this year and hear the latest on XPe and CE front. So much info and so little time though.&lt;br /&gt;&lt;a href="https://www.medc2007.com/public/pubsessions.aspx"&gt;Sessions&lt;/a&gt; info is looking very encouraging and interesting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2378829756983849350?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2378829756983849350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2378829756983849350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2378829756983849350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2378829756983849350'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/medc-2007-is-coming.html' title='MEDC 2007 is coming..'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-6533138443992846340</id><published>2007-04-19T12:06:00.000-07:00</published><updated>2007-05-09T23:47:39.123-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista news and info'/><title type='text'>AutoPlay without Explorer</title><content type='html'>I am filing this not as a tip but rather as an encouraging info. Unfortunately, I cannot reveal any technical details of my implementations here at this stage of the project (done for a customer) but more to show up soon, I hope.&lt;br /&gt;&lt;br /&gt;It has been a problem for quite some time to get some of the Explorer-only features working on XPe without Explorer shell. Myself I had a &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/47714b609ab123ea?hl=en&amp;amp;"&gt;negative post&lt;/a&gt; to the newsgroup on the subject.&lt;br /&gt;The real challenge appears there not when you remove the Explorer.exe from the image but when you stop launching Explorer as shell.&lt;br /&gt;&lt;br /&gt;Removing Explorer gives you a lot:&lt;br /&gt;- Explorer is in general a big security hole.&lt;br /&gt;- It is hard to get rid of all unwanted pieces of the Explorer.&lt;br /&gt;- Explorer is not for embedded (it is not "embedded" type of application and have never been really componentized).&lt;br /&gt;- Explorer increases your image footprint. Explorer dependencies are awfully big.&lt;br /&gt;- Explorer implements only 2 foot UI and it may be very inconsistent to your own applications GUI.&lt;br /&gt;- so on.&lt;br /&gt;&lt;br /&gt;Anyway, I finally managed to develop my own shell that implements missing pieces that were only working with Explorer Shell so far. Someday I will post what are the missing features among which is the AutoPlay. But the important message now is that AutoPlay can be working without Explorer shell running in background. You just have to do some hacking and coding within your own shell app.&lt;br /&gt;&lt;br /&gt;Another good news is that I got the same shell app up and running on Vista (with some mods though) where I stripped out Explorer components.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-6533138443992846340?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/6533138443992846340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=6533138443992846340' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6533138443992846340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6533138443992846340'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/autoplay-without-explorer.html' title='AutoPlay without Explorer'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-6880424821119900364</id><published>2007-04-19T11:49:00.000-07:00</published><updated>2007-04-19T12:03:36.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #30: Where is intl.cpl?</title><content type='html'>&lt;span style="color:#ffff00;"&gt;&lt;/span&gt;&lt;br /&gt;Surprisingly enough but &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/313102e1746eb8f6/87db6f5702a0dac1?hl=en#87db6f5702a0dac1"&gt;this question&lt;/a&gt; keeps coming up in the newsgroup.&lt;br /&gt;&lt;br /&gt;The answer is simple: beside the "Regional and Language Options" component that you might have already added to your configuration, please also add "&lt;strong&gt;International Control Panel&lt;/strong&gt;" component that is located under "&lt;em&gt;Software : System : User Interface : Shells : Windows Shell&lt;/em&gt;" category.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-6880424821119900364?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/6880424821119900364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=6880424821119900364' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6880424821119900364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6880424821119900364'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-30-where-is-intlcpl.html' title='XPe tip #30: Where is intl.cpl?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4108366041484320109</id><published>2007-04-19T11:30:00.000-07:00</published><updated>2007-04-19T11:53:39.020-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #29: How to prepare and add Group Policy at build time</title><content type='html'>We all know how Group Policies are helpful in XPe world. It is not a problem to edit the policies at run time with GPEdit (Group Policy Editor) or directly in registry. But who want to repeat the same procedure many times while deploying images during development time?! So, this needs to be somehow automated.&lt;br /&gt;Also, not to mention that the GPEdit with all the dependencies it requires is quite heavy.&lt;br /&gt;&lt;br /&gt;But how to set up the policies you want in TD at image design time?&lt;br /&gt;A few way to accomplish that:&lt;br /&gt;&lt;br /&gt;- Mess with the Group Policy INF files and get them into your image updated. This is typically more complicated way because it is often not clear how policies described in the INF. Also, you'd need to bring GP updater tool as well.&lt;br /&gt;&lt;br /&gt;- Set up most of the policies you need as registry entries and add them in TD via your own component or TD Extra Registry section.&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7821C32F-DA15-438D-8E48-45915CD2BC14&amp;displaylang=en"&gt;Here&lt;/a&gt; you will find a helpful page (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7821C32F-DA15-438D-8E48-45915CD2BC14&amp;amp;displaylang=en"&gt;Group Policy Settings Reference&lt;/a&gt;) where you can download Excel document with most of the Group Policy listed with corresponding registry entries mentioned.&lt;br /&gt;&lt;br /&gt;- My favorite. I have provided &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/09e0a4b770657439?hl=en&amp;"&gt;this answer&lt;/a&gt; in newsgroup a while ago.&lt;br /&gt;Set up policy settings on XP Pro machine or on your own working XPe image that includes GPEdit tool and then save the following folder with all its content:&lt;br /&gt;&lt;strong&gt;%systemroot%\system32\GroupPolicy&lt;/strong&gt;.&lt;br /&gt;This folder contents MACHINE and User specific policies set up. Those are just .POL files. It also contains the shutdown/logon/logoff scripts (only if you didn't change the default location for those in GPEdit).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4108366041484320109?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4108366041484320109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4108366041484320109' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4108366041484320109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4108366041484320109'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-29-how-to-prepare-and-add-group.html' title='XPe tip #29: How to prepare and add Group Policy at build time'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-3329784787521378040</id><published>2007-04-19T10:27:00.000-07:00</published><updated>2007-04-19T11:15:37.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #28: Boot.ini Extra Switches</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;How do you change boot.ini for an XPe image during build time? The answer is - manually :-(&lt;/div&gt;&lt;br /&gt;&lt;div&gt;TD does generate boo.ini for you with the default ArcPath based on what you set up on the Configuration page. It is done by the EndOfBuild event handler of the Base Component that basically contains the Configuration build logic. However, if you plan to play with dual boot or want to change a logo or add some other &lt;a href="http://www.microsoft.com/technet/sysinternals/information/bootini.mspx"&gt;boot.ini switches&lt;/a&gt; you have to modify just built boot.ini manually every time you do a build in TD. This is typically not a big deal but annoying, especially if you forgot to change boot.ini just before you deploy the image.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;There was a few requests in the newsgroup for a way to change boot.ini content directly in TD. E.g., &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/89d19a650bf9dc63?hl=en"&gt;this one&lt;/a&gt;. For some reason Microsoft hesitated to implement that (I suspect the feature got a low priority) so I finally decided to step in and do something for XPe devs in this area.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Since TD doesn't support plug-in interfaces I could only implement that feature through undocumented CMI interfaces. Moreover, I didn't want to rewrite the Base Component (&lt;em&gt;possible and I've done that once for debugging purposes&lt;/em&gt;) I decided to add functionality that allows us to add extra boot.ini switches. After all, we could always change ArcPath on the Configuration settings page but never were able to change, say, boot loader logo (the famous bootlogo switch).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I ended up with a script that I added to my &lt;a href="http://www.xpefiles.com/viewtopic.php?p=115#115"&gt;XPeTools&lt;/a&gt; package that does what I described above. Via an additional field of XPeTools macro component's settings page you can add extra switches to the default ArcPath of boot.ini.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Note: added boot.ini extra switches are persistent and won't be wiped out when you start another session of TD with the same project (or simply close and re-open the project in TD). This is done the same way as I did that for other components of XPeTools package. They all have some advanced component properties used as a storage for the component functionality required settings.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_xY84_86a5cU/RiexcSHavfI/AAAAAAAAAAM/bKNwbfWxnt0/s1600-h/boot-ini-extra.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5055204206204075506" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_xY84_86a5cU/RiexcSHavfI/AAAAAAAAAAM/bKNwbfWxnt0/s320/boot-ini-extra.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;A screenshot of TD with the boot.ini extra switches page open is attached.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-3329784787521378040?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/3329784787521378040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=3329784787521378040' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3329784787521378040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3329784787521378040'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-28-bootini-extra-switches.html' title='XPe tip #28: Boot.ini Extra Switches'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_xY84_86a5cU/RiexcSHavfI/AAAAAAAAAAM/bKNwbfWxnt0/s72-c/boot-ini-extra.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7595260852652533738</id><published>2007-04-14T23:27:00.000-07:00</published><updated>2007-04-16T23:51:15.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>XPeTools component update</title><content type='html'>Thanks to &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/8aaadf9a5b74b715/33304da8be043a48?hl=en#33304da8be043a48"&gt;Jim&lt;/a&gt;, a documentation bug was discovered in the DependencyExplorer component.&lt;br /&gt;I now had some time to go over that bug and fix it in the new version of the component.&lt;br /&gt;I uploaded the updated package of &lt;a href="http://www.xpefiles.com/viewtopic.php?t=115"&gt;XPeTools&lt;/a&gt; on &lt;a href="http://www.xpefiles.com/"&gt;www.xpefiles.com&lt;/a&gt;. Updated package also includes some bug fixing for XPProEmulation component in UI and script areas. From UI I have removed the leftover Active button, assigned name to the Group filters to remove the confusion caused by the undocumented exclusion filter, fixed other minor UI issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7595260852652533738?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7595260852652533738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7595260852652533738' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7595260852652533738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7595260852652533738'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpetools-component-update.html' title='XPeTools component update'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2753275662534535806</id><published>2007-04-13T17:43:00.000-07:00</published><updated>2007-04-19T11:30:00.608-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #27: PID - how to use?</title><content type='html'>This is an old topic but unbelivably &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/search?hl=en&amp;group=microsoft.public.windowsxp.embedded&amp;amp;q=PID"&gt;comes online&lt;/a&gt; once in a while.&lt;br /&gt;&lt;br /&gt;XPe devs should understand the difference between runtime licenses and licensed XPe Toolkit.&lt;br /&gt;Runtime license is provided to you after you signed a legal agreement with Microsoft (through XPe distributor) called CLA. Then you are given stickers with PID numbers on it (numbers like &lt;strong&gt;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&lt;/strong&gt;). Used to be that the stickers all had different unique PIDs, nowadays they are the same in one multiple-license volume purchase. Depending on how many licenses are covered by your agreement you should be getting some amount of stickers. You use just one PID from any sticker and type it in the Runtime ID field on Configuration Settings page in TD. This will get rid of the "Evaluation build ..." text at run time (it other words, your runtime will be properly activated).&lt;br /&gt;&lt;br /&gt;Another story with the toolkit. To be able to create activated runtimes, to even see that Runtime ID field in TD, you must be having and using the licensed toolkit. In Eval toolkit (the one you can download from public MSDN or receive on Eval CDs) that field is hidden, thus not allowing you to create activated runtimes. The CD-key you are getting from Microsoft (aka the toolkit Serial Number) is to be used once when you are installing the tools (TD, CD, database, etc.). Don't put this number in the Runtime field in TD - it is a wrong place for it. Rather type in there a PID from a sticker.&lt;br /&gt;&lt;br /&gt;Also, just FYI. In SP2 times there was a QFE issued by Microsoft that was patching the toolkit to be able to use new PID range in SP1 database. That QFE was to address Extend Runtime Product Key Range for Windows XP Embedded. Quote: "&lt;em&gt;This update allows OEM's and embedded developers to use runtime product keys provided after the release Windows XP Embedded with Service Pack 2 on a database containing Windows XP Embedded Service Pack 1 or earlier component databases.&lt;/em&gt;".&lt;br /&gt;&lt;br /&gt;If you contact your XPe distributor, they should be able to explain you all the details about PId and etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2753275662534535806?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2753275662534535806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2753275662534535806' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2753275662534535806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2753275662534535806'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-27-pid-how-to-use.html' title='XPe tip #27: PID - how to use?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4348542790651285491</id><published>2007-04-13T17:37:00.000-07:00</published><updated>2007-04-16T23:51:15.109-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>XPe boot-wish-list</title><content type='html'>To continue &lt;a href="http://km-dev.blogspot.com/2007/04/xpe-tip-22-disk-read-error.html"&gt;my post&lt;/a&gt; about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MBR&lt;/span&gt; problems.&lt;br /&gt;&lt;br /&gt;I believe &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XPe&lt;/span&gt; documentation doesn't describe this topic in the details it should have to. In some places in the documentation they assume you've got &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;XP&lt;/span&gt; Pro running on the device. Which means you've already properly partitioned and formatted the local storage to boot from using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XP&lt;/span&gt; Pro Setup.&lt;br /&gt;Below is my personal wish-list about what should be included in the next Service Pack for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XPe&lt;/span&gt; if Microsoft will release one:&lt;br /&gt;    - Create one tool (better Win32 app that we can launch from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;WinPE&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XP&lt;/span&gt; Pro or any other flavor of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;XP&lt;/span&gt; and nowadays Vista) that will properly partition local storage on target device. After all, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;XP&lt;/span&gt; Pro Setup does that *much* better and more reliable then any tools from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;XPE&lt;/span&gt; toolkit.&lt;br /&gt;&lt;br /&gt;    - Provide more detail troubleshooting section in the documentation that will cover as many failed case as possible - from broken &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MBR&lt;/span&gt; to boot sector, from changing timeout of boot.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;ini&lt;/span&gt; to debug parameters for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;KD&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;    - There should be documentation section (part of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;XPe&lt;/span&gt; docs!!) that explain how BIOS loads the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;MBR&lt;/span&gt;, info about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;MBR&lt;/span&gt; structure, boot sector, boot sequence of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;XP&lt;/span&gt;, loader (how it gets loaded by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;bootsector&lt;/span&gt;) and etc. Ideally they should include info about all the fields of MS version of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;MBR&lt;/span&gt; and boot sectors. After all, most of this info is out there in MS KB articles (but hard to search) and on the Web.&lt;br /&gt;&lt;br /&gt;    - Provide a set of tools (my best wish is to have one complex command line tool with a bunch of switches like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;myu&lt;/span&gt; favorites &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;MbrFix&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;NirCmd&lt;/span&gt;) that will do fixing for all the parts that may get broken  - from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;MBR&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;bootsectors&lt;/span&gt; (all types!) and partition setup (I secretly don't get why we should be using 3rd party tools like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;MbrFix&lt;/span&gt;, for instance?).&lt;br /&gt;&lt;br /&gt;I will probably update this list once in a while when my &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_25"&gt;memory&lt;/span&gt; flashes out with more ideas I've been having.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4348542790651285491?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4348542790651285491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4348542790651285491' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4348542790651285491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4348542790651285491'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-boot-wish-list.html' title='XPe boot-wish-list'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7209745334950735755</id><published>2007-04-13T17:21:00.000-07:00</published><updated>2007-04-16T23:48:28.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #26: Msvcr80 in XPe world</title><content type='html'>The newest Visual Studio (VS2005 and next version Orcas) by default will link all C/C++ applications you create with the IDE wizard to the latest CRT library which is msvcr80.dll. By default, again, it uses a shared library link (dll must be present in the system path on the target).&lt;br /&gt;&lt;br /&gt;Only XPe FP2007 brings in the library but as a part of the huge .Net 2.0 Framework component. It is not even wrapped into a separate primitive component. Obviously, you don't want to add such beast as .Net 2.0 to just add msvcr80, unless you need .Net 2.0 in your image.&lt;br /&gt;&lt;br /&gt;Here is a few tricks you can use to get rid of possible problems with missing msvcr80 at runtime:&lt;br /&gt;- Copy msvcr80.dll along with msvcm80.dll and msvcp80.dll libraries from VS2005 folders on PC where you run the VS tools (typically somewhere under "\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT").&lt;br /&gt;&lt;br /&gt;- Make sure you are working with the proper version of the libraries corresponding to the project settings - Debug or Release. Often, people are working with Debug build (which is default by the wizard, btw) that requires debug version of the msvcr80 - msvcr80d.dll.&lt;br /&gt;&lt;br /&gt;- Please copy manifest built along with your application exe in VS2005. This will make sure it will use the right dependencies versions.&lt;br /&gt;&lt;br /&gt;- Often (depends on your application logic and implementation) you can simply use only basic Win32 API and you may not need the CRT libraries at all. The MSVCR80 may get linked however if you have "Multi-Threaded DLL (/MD)" or "Multi-Threaded Debug DLL (/MDd)" option set for the Runtime Library on the Code Generation tab in the C/C++ branch of the Project Properties in VS2005. Just use the single-threaded Dlls there and disable Exceptions. Or, alternatively and my favorite, just link statically to the library to remove the dependency at all (use "Multi-Threaded (/MT)" option for instance).&lt;br /&gt;&lt;br /&gt;- Make sure to include side-by-side components in TD.&lt;br /&gt;&lt;br /&gt;- If the above doesn't help, install VS2005 (x86) &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&amp;amp;displaylang=en"&gt;Redist package&lt;/a&gt; at runtime.&lt;br /&gt;&lt;br /&gt;- If the application still fails to load, run the application through DependencyWalker on the target devices. More precisely, run it through Profiler of the &lt;a href="http://www.dependencywalker.com/"&gt;DependencyWalker&lt;/a&gt;. Then you should be able to see why it's failing to load.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7209745334950735755?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7209745334950735755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7209745334950735755' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7209745334950735755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7209745334950735755'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-26-msvcr80-in-xpe-world.html' title='XPe tip #26: Msvcr80 in XPe world'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4876598785171397962</id><published>2007-04-13T17:04:00.000-07:00</published><updated>2007-04-16T23:48:28.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #25: Dial-up autoconnect</title><content type='html'>Adam has recently posted a link to a &lt;a href="http://adamnoffie.blogspot.com/2007/04/ras-dial-up-tiptrick-for-auto-dial_12.html"&gt;nice dial-up tip in his blog&lt;/a&gt; that I &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/73c908bd23f42708/9d498f5ec69841fe?hl=en#9d498f5ec69841fe"&gt;commented&lt;/a&gt; a little bit. Thought I would mention the fix in my blog as well but all credits should go to Adam.&lt;br /&gt;&lt;br /&gt;To get rid of the annoying Dial-up connection dialog appearing every time an application is calling to create an Internet connection through WinInet API (the exact component responsible is rasdial code) all you have to do is to set the follwoing key below:&lt;br /&gt;[&lt;em&gt;HKEY_CURRENT_USER\RemoteAccess\Profile\&lt;&lt;strong&gt;ConnectionName&lt;/strong&gt;&gt;&lt;/em&gt;],"&lt;em&gt;AutoConnect&lt;/em&gt;" =dword:0.&lt;br /&gt;Where the &lt;em&gt;&lt;strong&gt;ConnectionName&lt;/strong&gt;&lt;/em&gt; is the name you assigned to the dial-up connection created.&lt;br /&gt;&lt;br /&gt;This and more info you can read about dial-up autoconnect in &lt;a href="http://support.microsoft.com/kb/316530"&gt;this MS KB article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I worked a lot on the rasdial components in WindowsCE a while ago but on XP those are a bit different structured and, obviously, without the source code you are provided with less control on XP over the RAS than on WinCE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4876598785171397962?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4876598785171397962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4876598785171397962' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4876598785171397962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4876598785171397962'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-25-autoconnect.html' title='XPe tip #25: Dial-up autoconnect'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-8468359786654152457</id><published>2007-04-13T16:56:00.000-07:00</published><updated>2007-04-16T23:48:28.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #24: CSDVersion</title><content type='html'>On versions of XPe toolkit (database) prior to FP2007 update there was a problem related to version info that gets set in the system registry hive and gets returned by APIs like GetVersion[Ex]. Some applications code or application installation scripts make queries for the system version info to either visualize it to end user, change install path or setup or change the application logic if not quit automatically on unsupported OSes.&lt;br /&gt;Obviously, if the version info is set incorrect those application will fail or won't work as expected (as tested on regular XP Pro with the same SP level installed).&lt;br /&gt;&lt;br /&gt;The system version is stored in the &lt;em&gt;CSDVersion&lt;/em&gt; string registry value under [&lt;em&gt;HKLM\SYSTEM\CurrentControlSet\Control\Windows&lt;/em&gt;] key. You can easy find out what the permitted values are but instead just simply match whatever you've got on the same level SP XP Pro machine under the same key.&lt;br /&gt;Some of the right values I mentioned in &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/edac5d4a86bd1bb0?hl=en"&gt;this thread&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-8468359786654152457?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/8468359786654152457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=8468359786654152457' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8468359786654152457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8468359786654152457'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-24-csdversion.html' title='XPe tip #24: CSDVersion'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4627423498563986535</id><published>2007-04-13T16:33:00.000-07:00</published><updated>2007-04-16T23:48:28.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #23: Account password expiration</title><content type='html'>I hate the account password expiration feature on XP. But on XPe image it is even worth because your users may get stuck there forever if their account is expired. Giving the fact that your locked down image may not allow to fix the problem with GUI, the person who is administrating the target devices will hate you even more.&lt;br /&gt;&lt;br /&gt;So, how to get rid of the account password expiration? Actually, easy. A few way you can accomplish that depending on what's included in your image already:&lt;br /&gt;&lt;br /&gt;- Use GUI User Manager at run time to change that flag.&lt;br /&gt;&lt;br /&gt;- Run the following command at run time:&lt;br /&gt;&lt;em&gt;net accounts /maxpwage:unlimited&lt;/em&gt;&lt;br /&gt;You can automate and launch it during FBA with FBA Generic command, for instance.&lt;br /&gt;&lt;br /&gt;- My favorite: use command line version of User Manager -&lt;a href="http://www.jsifaq.com/SF/Tips/Tip.aspx?id=2445"&gt; &lt;strong&gt;&lt;em&gt;usrmgr.exe&lt;/em&gt;&lt;/strong&gt; &lt;/a&gt;tool from 2K or XP Resource Kit. It supports a command line argument to change the password expiration on selected accounts. E.g.:&lt;br /&gt;&lt;em&gt;cusrmgr.exe -u UserName +s PasswordNeverExpires&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;-Use Group Policy (GPO) template to reset the security settings of password expiration timeouts. Here is a nice MS &lt;a href="http://support.microsoft.com/kb/226243"&gt;KB article&lt;/a&gt; explaining how to do that. The option you are looking for is &lt;strong&gt;&lt;em&gt;MaximumPasswordAge&lt;/em&gt;&lt;/strong&gt; under &lt;strong&gt;&lt;em&gt;[System Access]&lt;/em&gt;&lt;/strong&gt; section. So, you create a similar INF file, where you set the MaximumPasswordAge to -1 - unlimited, and install it during FBA using &lt;em&gt;secedit.exe&lt;/em&gt; tool (&lt;strong&gt;Security Configuration Engine Command Line Utility &lt;/strong&gt;component). Here is a simple INF you could create to get rid of the annoying password expiration feature:&lt;br /&gt;&lt;em&gt;[Version]&lt;/em&gt;&lt;br /&gt;&lt;em&gt;signature="$CHICAGO$"&lt;/em&gt;&lt;br /&gt;&lt;em&gt;[System Access]&lt;/em&gt;&lt;br /&gt;&lt;em&gt;MaximumPasswordAge = -1&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4627423498563986535?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4627423498563986535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4627423498563986535' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4627423498563986535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4627423498563986535'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-23-account-password-expiration.html' title='XPe tip #23: Account password expiration'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1061672240769100480</id><published>2007-04-13T16:22:00.000-07:00</published><updated>2007-04-16T23:48:28.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #22: Disk read errors</title><content type='html'>Perhaps, most of us who ever tried to partition a drive manually (not using XP Setup CD) have seen a boot time error where it says "disk read error" or something similar coming from BIOS.&lt;br /&gt;&lt;br /&gt;There was quite many thread about that in newsgroup. &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/0df820e48a79ec72?hl=en"&gt;Here&lt;/a&gt; is one of the latest.&lt;br /&gt;I am not going to go deep here and explain why it might have happened if you used Microsoft tools like diskpart and etc. Just keep in mind that tools like diskpart are intended to be used by IT technicians who know their stuff and dealt with similar partitioning problems many times. Now you also do :-)&lt;br /&gt;&lt;br /&gt;I found it extremely easy to repro the issue if you use VPC (Microsoft Virtial PC 2005-2007). Just create a new image there and partition the drive with diskpart. Even if you set the system partition active, you may end up with no booting image because of the screwed MBR record. This of course tends to be the case from machine to machine. I mean it is not 100% reproducible if you move to another PC.&lt;br /&gt;&lt;br /&gt;The fix is actually quite simple. I posted it many times:&lt;br /&gt;- Mark the system partition as active if you haven't done so.&lt;br /&gt;- Try fixing MBR. You can do it manually (just have to get used to MBR binary flags and partition table settings) or you can use &lt;a href="http://www.sysint.no/Nedlasting/MbrFix.htm"&gt;MbrFix&lt;/a&gt; tool I mentioned in the newsgroup and in this blog. MbrFix tool is lovely and provides lot more functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1061672240769100480?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1061672240769100480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1061672240769100480' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1061672240769100480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1061672240769100480'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-22-disk-read-error.html' title='XPe tip #22: Disk read errors'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-622933897118704521</id><published>2007-04-13T15:15:00.000-07:00</published><updated>2007-04-16T23:48:28.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #21: Dependecy Explorer vs Configuration Explorer</title><content type='html'>There was recently a &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/8aaadf9a5b74b715/33304da8be043a48?hl=en#33304da8be043a48"&gt;bug&lt;/a&gt; found in the documentation of the Dependency Explorer component that led to some confusions I had to remove in the newsgroup.&lt;br /&gt;&lt;br /&gt;So, what's the difference between Dependency Explorer and Configuration Explorer components.&lt;br /&gt;The DependencyExplorer component is aimed to walk through components in the &lt;strong&gt;database&lt;/strong&gt;. While the ConfigurationExplorer component serves the purpose of walking through components in the &lt;strong&gt;Configuration&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;If you fire up Settings page of the DependencyExplorer component and type in a component name in the search edit box and hit Apply button you will see the following sections listed in order:&lt;br /&gt;"&lt;em&gt;Components:&lt;/em&gt;" section lists components that comply to the search criteria. Even if you typed in an exact component name, you will still likely see a few components listed here as there might have been a few revisions of the same component imported in the database and released.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Dependencies:&lt;/em&gt;" section lists components that the component selected (clicked on) in the above section depends on.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Chain:&lt;/em&gt;" section lists components in the inheritance chain of the component selected in the first section.&lt;br /&gt;Note: the inheritance chain has nothing to do with the dependency chain.&lt;br /&gt;Here you're supposed to see all the base prototypes of your components, if any, up to the very root one and the component itself.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Custom Properties:&lt;/em&gt;" section lists advanced properties of the DependencyExplorer component (not relevant here).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now about the ConfigurationExplorer Settings page:&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Configuration Components:&lt;/em&gt;" section lists components that comply to the search criteria and belong to the config. Here, if you typed in an exact component name, you will likely see one component listed as it is hard to add a few revisions of the same component to the same configuration (but not impossible!).&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Dependencies in Configuration:&lt;/em&gt;" section lists components that the component selected in the above section depends on. Only those dependencies listed here that are included in the configuration.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Configuration Components depend on the selected component:&lt;/em&gt;" section lists components that depend on the component selected (clicked on) in the first section but only included in the config. This is similar to the result of the DEPTREE command of XPECMD tool released by Microsoft with FP2007 but not exactly the same. The difference is that the DEPTREE walks through the database while the ConfigurationExplorer also filters out components to list only those that belong to the same Config. If you need the DEPTREE functionality there, you just use ConfigurationExplorer component within a huge config like XPProEmulation project.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Chain:&lt;/em&gt;" section lists components in the inheritance chain of the component selected in the first section. Here again you are supposed to see base prototypes of your components, if any. The prototype components are all listed here, regardless of if they all belong to the Config, and the component itself.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Custom Properties:&lt;/em&gt;" section lists advanced properties of the ConfigurationExplorer component (not relevant here).&lt;br /&gt;&lt;br /&gt;Now let me show you the results you actually get from if you explore XPProEmulation component within XPProEmulation project using both tools.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DependencyExplorer:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;Search box&lt;/em&gt;: XPProEmulation&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Components:&lt;/em&gt;" section:&lt;br /&gt;&lt;div align="left"&gt;&lt;span style="color:#3333ff;"&gt;XPProEmulation [Version ...], [Visibility=1000]&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;"&lt;em&gt;Component Dependencies:&lt;/em&gt;" section:&lt;br /&gt;No component dependencies found.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Chain:&lt;/em&gt;" section:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;XPProEmulation [Version ...], [Visibility=1000]&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Default Prototype Component [Version ...], [Visibility=1]&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Custom Properties:&lt;/em&gt;" section:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;....&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ConfigurationExplorer&lt;/strong&gt;:&lt;br /&gt;&lt;em&gt;Search box&lt;/em&gt;: XPProEmulation&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Configuration Components:&lt;/em&gt;" section:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;XPProEmulation [Version ...], [Visibility=1000]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Dependencies in Configuration:&lt;/em&gt;" section:&lt;br /&gt;No component dependencies found.&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Configuration Components depend on the selected component&lt;/em&gt;"&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;XPe Tools [Version ...], [Visibility=1000]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Component Chain:&lt;/em&gt;" section:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;XPProEmulation [Version ...], [Visibility=1000]&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Default Prototype Component [Version ...], [Visibility=1]&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"&lt;em&gt;Custom Properties:&lt;/em&gt;" section:&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;.... &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope this clears things up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-622933897118704521?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/622933897118704521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=622933897118704521' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/622933897118704521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/622933897118704521'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-21-dependecy-explorer-and.html' title='XPe tip #21: Dependecy Explorer vs Configuration Explorer'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-8539250667808749606</id><published>2007-04-13T13:21:00.000-07:00</published><updated>2007-04-16T23:48:28.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #20: XPe Tools package</title><content type='html'>I keep mentioning &lt;a href="http://www.xpefiles.com/viewtopic.php?t=115"&gt;XPe Tools&lt;/a&gt; package from &lt;a href="http://www.xpefiles.com"&gt;www.xpefiles.com&lt;/a&gt; in newsgroup.&lt;br /&gt;So, what is it? It is a set of tools I created for XPe developers to help exploring components and configurations, upgrading to newer version of SP, fighting with component dependencies and so on and so forth.&lt;br /&gt;Actually, the initial purpose I created the first component in the package (XPProEmulation) was to get familar with undocumented CMI interfaces that XPe toolkit uses. Some day I'll write a few notes and hopefull articles here in the blog about CMI and what can be done using it.&lt;br /&gt;&lt;br /&gt;The tools are implemented as components themselves (I thought it would be much more useful to get your hands on the tools by not leaving TD environment). More or less TD plug-ins, although TD lacks the real plug-in interface.&lt;br /&gt;&lt;br /&gt;When you import the &lt;strong&gt;XPeTools.SLD&lt;/strong&gt;, you will get a few components added to the database and they will appear under "Software : Test &amp; Development" category in the Component Browser in TD. No repository is provided or required.&lt;br /&gt;The new components you are going to see are XPe Tools (macro), Configuration Explorer, Dependency Explorer, Derive Explorer, XPPro Emulation and Smart Upgrade. Every component from the package has a link to an encrypted CMI script and DHTML page representing that component functionality.&lt;br /&gt;&lt;br /&gt;You may include all the components into your Configuration, the image won't grow in size since no files added, by resolving dependencies of the macro component "XPe Tools". Please use XPeTools Package that includes all the components mentioned above to operate (delete/add/etc.) on the package components at once.&lt;br /&gt;&lt;br /&gt;You will get more details on what components do and how they are implemented if you look at the Readme.txt file provided within the same zip as the SLD file. Also, all the components have links on their Settings pages ("more info") to show you more information about the current component and functionality.&lt;br /&gt;&lt;br /&gt;I will briefly describe here what components are and what they do:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XPeTools&lt;/strong&gt; - macro component that brings in all other components from the package. Some useful global options and flags added. Boot.INI extra switches.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Configuration Explorer&lt;/strong&gt; - this component allows you to navigate through Configuration components to see their dependencies and components that depend on them. It also allows you to save configurations in plain text files (useful for further project comparisions).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Dependency Explorer&lt;/strong&gt; - allows you to navigate through XPe database components to see their dependencies. Variaty of component filter options is available.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Derive Explorer&lt;/strong&gt; - allows you to navigate through XPe database to see derived components. (got to get this worikng on FP2007)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XPPro Emulation&lt;/strong&gt; - allows you to add group filtered components from XPe database to your Configuration. Inclusion and Exclusion Group Filters are suported. Due to some bugs of SP2 FP2007 (me reported to Microsoft) the exclusion filter is now required in order to get rid of Hardware components from the final Software-only XPProEmulation project.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Smart Upgrade&lt;/strong&gt; - allows you to upgrade components in the Configuration preserving their extended properties. Smart Upgrade component will allow XPe developers smoothly "port"their SLX projects to SP2 and later preserving the configuration component settings during the upgrade (the settings of the "User Interface Core" component, for instance). This component should work for SP1--&gt;SPx ports as well as for RTM--&gt;SPx.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One quick comment about one option of the DependencyExplorer and other components - &lt;strong&gt;Minimum Visibility&lt;/strong&gt;. This option is very helpful in the filtering feature of the tools. But I mainly use it to lower the visibility below 100 as the TD doesn't really allow that (well, it does but it requires a reg hack that I will post some day).&lt;br /&gt;And please don't hesitate to lower the option value down to 0. Then you will be able to see even Legacy components left in the database from previous version of the product (and still distributed by Microsoft). you should not bother to add those components to your configuration(s) but it is a great knowledge you can gain if you explore those components as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-8539250667808749606?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/8539250667808749606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=8539250667808749606' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8539250667808749606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/8539250667808749606'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-20-xpe-tools-package.html' title='XPe tip #20: XPe Tools package'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4606447605334475865</id><published>2007-04-13T12:56:00.000-07:00</published><updated>2007-04-19T11:29:37.743-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #20: Active HTML Desktop</title><content type='html'>An interesting question recently popped up in the newsgroup about how to get a &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/64b069e1dcaf9238/9be2efddaa405041?hl=en#9be2efddaa405041"&gt;toolbar working in Active HTML Desktop on XPe&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As you know, on XP if you wanted to set up Desktop to show an HTML page you'd go to -&gt; Properties -&gt; Desktop -&gt; Customize Deskop -&gt; Web page and add a web page (aka component) there with soem setting options assigned. When it was done, your Desktop would show the selected HTML page(s). I always use this feature on my XP machines where I set the IE Home page (typically Google.com) to be the Desktop.&lt;br /&gt;&lt;br /&gt;This feature works ok on XPe, of course. However, &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/64b069e1dcaf9238/9be2efddaa405041?hl=en#9be2efddaa405041"&gt;an issue&lt;/a&gt; was reported about the toolbar of the Active Desktop not being popping up.&lt;br /&gt;On XP, that toolbar (a popup that appears on the top of the Desktop when you are hovering mouse cursour over the top of the desktop HTML page) gets disappeared when you have the desktop components locked. As I mentioned, components include the web pages you set for the active desktop. The lock can be set with GUI - just open up Desktop Items dialog (Display -&gt; Properties -&gt; Desktop -&gt; Customize Desktop -&gt; Web) and clear the "Lock desktop items" &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;checkbox&lt;/span&gt; at the bottom.&lt;br /&gt;&lt;br /&gt;But we are always interested in the registry entries mapped to particular &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XP&lt;/span&gt; features when we have to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;pre&lt;/span&gt;-set those in TD for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XPe&lt;/span&gt; builds. The HTML Desktop Lock is mapped to&lt;br /&gt;[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;HKCU&lt;/span&gt;\Software\Microsoft\Internet Explorer\Desktop\Components],"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;GeneralFlags&lt;/span&gt;" &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;dword&lt;/span&gt; registry value. It is a bit mask and corresponds to a few general options of the page display.&lt;br /&gt;&lt;br /&gt;If it is set to "2" (or better say, the second bit set) the desktop items are locked and the toolbar won't be sliding out. You should reset it to 0 if you want the toolbar to appear by mouse hover event.&lt;br /&gt;&lt;br /&gt;I am going to update this post with some more information as required to clarify a few things about the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ActiveDesktop&lt;/span&gt; feature of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;XP&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;First of all, the feature works great on &lt;a href="http://www.xpefiles.com/viewtopic.php?t=972"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;XPProEmulation&lt;/span&gt;&lt;/a&gt; image. Note that to get it to work there didn't require any custom registry entries to be populated.&lt;br /&gt;A few more tips here:&lt;br /&gt;- &lt;em&gt;Shell32.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;dll&lt;/span&gt;&lt;/em&gt; must be in the image. Well, since the feature &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;doens&lt;/span&gt;' make sense out of Explorer Shell - Desktop is required - it is almost useless to say the Shell32 is required too.&lt;br /&gt;&lt;br /&gt;- Make sure "&lt;em&gt;Primitive: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Browseui&lt;/span&gt;&lt;/em&gt;", "&lt;em&gt;HTML Rendering Engine&lt;/em&gt;", "&lt;em&gt;Primitive: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Oleaut&lt;/span&gt;32&lt;/em&gt;" and "&lt;em&gt;Primitive: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Shlwapi&lt;/span&gt;&lt;/em&gt;" components are in your image. Last 3 components are probably in your image already if you resolved Explorer Shell dependencies.&lt;br /&gt;&lt;br /&gt;- Make sure the user you are logged in have Admin privileges.&lt;br /&gt;&lt;br /&gt;- Check if &lt;strong&gt;Desktop.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;htt&lt;/span&gt;&lt;/strong&gt; file gets generated under &lt;&lt;em&gt;%UserProfile%\Application Data\Microsoft\Internet Explorer&lt;/em&gt;&gt; folder.&lt;br /&gt;&lt;br /&gt;- Make sure "&lt;strong&gt;Active Desktop Mover&lt;/strong&gt;" object is registered. It will be mentioned under [&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;HKEY&lt;/span&gt;_CLASSES_ROOT\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;CLSID&lt;/span&gt;\{72267F6A-A6F9-11D0-BC94-00C04&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;FB&lt;/span&gt;67863}] key. Basically this object is what you see as the toolbar when you move mouse cursor over the top area of the page.&lt;br /&gt;&lt;br /&gt;- Make sure the &lt;strong&gt;Low&lt;/strong&gt; security settings for &lt;strong&gt;My Computer&lt;/strong&gt; (local) Internet explorer &lt;strong&gt;zone&lt;/strong&gt; are set.&lt;br /&gt;&lt;br /&gt;To explain you why I ask you to check the above, I will have to explain you how the &lt;strong&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;ActiveDektop&lt;/span&gt;&lt;/strong&gt; feature works with a Web component setup. When you set it up in the &lt;em&gt;Desktop Items&lt;/em&gt; dialog, Explorer Shell automatically generates an html based file - &lt;strong&gt;Desktop.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;htt&lt;/span&gt;&lt;/strong&gt; - under a user profile folder (the one mentioned above). That &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;HTT&lt;/span&gt; file is the Web page you see on your Desktop afterwards. It may contain a few components (Web pages) - they are all &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;FRAMEs&lt;/span&gt; within the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;HTT&lt;/span&gt; html file (tag &lt;em&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;IFRAME&lt;/span&gt;&lt;/em&gt; used). The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;HTT&lt;/span&gt; page also has an object embedded on the page (&lt;em&gt;OBJECT&lt;/em&gt; tag used) - &lt;strong&gt;Active Desktop Mover&lt;/strong&gt; - that is basically the toolbar you see when you move the mouse cursor over the top side of the page. All the Web components and the toolbar appearances are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;controled&lt;/span&gt; by a set of values and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;subkeys&lt;/span&gt; under [&lt;em&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;HKCU&lt;/span&gt;\Software\Microsoft\Internet Explorer\Desktop\Components&lt;/em&gt;] key.&lt;br /&gt;&lt;br /&gt;Please note that you can open that &lt;em&gt;Desktop.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;htt&lt;/span&gt;&lt;/em&gt; file within IE as a regular &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;dhtml&lt;/span&gt; page - you will notice it looks very like your Desktop. Obviously, there is no default association for .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;htt&lt;/span&gt; file on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;XP&lt;/span&gt;(e) so you will have to either manually associate it with IE or simply launch the following command line:&lt;br /&gt;&lt;em&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;iexplore&lt;/span&gt; "%&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;UserProfile&lt;/span&gt;%\Application Data\Microsoft\Internet Explorer\Desktop.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;htt&lt;/span&gt;"&lt;/em&gt;&lt;br /&gt;(replace the &lt;em&gt;%&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;UserProfile&lt;/span&gt;%&lt;/em&gt; with the actual value of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;env&lt;/span&gt;.var before the launch)&lt;br /&gt;&lt;br /&gt;When launched, you will have to allow IE to render the page with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;ActiveX&lt;/span&gt; control embedded (the Active Desktop Mover control) via a little &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;popup&lt;/span&gt; appearing as the IE info bar.&lt;br /&gt;&lt;br /&gt;All the above applies to IE 5.5 and any later version.&lt;br /&gt;&lt;br /&gt;What launch in IE gives you? A perfect tool to test whether the toolbar appears or not when you move the mouse cursor over the top of the page. You can fire &lt;a href="http://www2.blogger.com/www.sysinternals.com"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;Regmon&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;Filemon&lt;/span&gt;&lt;/a&gt; (better &lt;a href="http://www2.blogger.com/www.sysinternals.com"&gt;Process Monitor&lt;/a&gt;) while running IE instance and monitor what's going on there when you navigate the browser to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;HTT&lt;/span&gt; page. It will show you all the object &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;Dlls&lt;/span&gt; loaded, registry access, etc. Or, better, run the above command line and the mouse hover test through &lt;a href="http://www2.blogger.com/www.dependencywalker.com"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;DependencyWalker&lt;/span&gt;&lt;/a&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;Profiler&lt;/span&gt; (open &lt;em&gt;\program files\Internet Explorer\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;iexplore&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;exe&lt;/span&gt;&lt;/em&gt;, hit F7, type in the full path to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;HTT&lt;/span&gt; file and hit OK). It will show you in red if any &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;Dlls&lt;/span&gt; is missing while you are testing the page.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last update on the issue. When you target the feature for your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;XPe&lt;/span&gt; image and don't want to use a full blown image like &lt;a href="http://www.xpefiles.com/viewtopic.php?t=972"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;XPProEmulation&lt;/span&gt;&lt;/a&gt;, please make sure you include the template for &lt;em&gt;Desktop.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;htt&lt;/span&gt;&lt;/em&gt;. The template is going to be used by the shell to generate the actual Desktop.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;htt&lt;/span&gt; with the list of components you place on your Desktop. If you don't include the template in your image, Web Desktop feature implementation code will use a dummy &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;HTT&lt;/span&gt; file that won't have a reference to the toolbar &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;ActiveX&lt;/span&gt; component and therefore won't show it on mouse hover event.&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;Easieast&lt;/span&gt; way to get the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;HTT&lt;/span&gt; file in your image is to add "Images and Media" component. However, the component is quite big so you may end up just adding the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;HTT&lt;/span&gt; file only via your own component or TD Extra Files section. That file is is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;XPe&lt;/span&gt; Repository anyway.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good luck with debugging Web components on your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;ActriveDesktop&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4606447605334475865?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4606447605334475865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4606447605334475865' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4606447605334475865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4606447605334475865'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-20-active-html-desktop.html' title='XPe tip #20: Active HTML Desktop'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7958679362901215685</id><published>2007-04-13T12:53:00.000-07:00</published><updated>2007-04-16T23:48:28.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #19: Microsoft Access database</title><content type='html'>How to get an Access database working on your image with ODBC? Answer is &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/7ca34c99ff91f27b/cb5f200220fb8e66?hl=en#cb5f200220fb8e66"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Basically you need to include "Jet Database XXX" components in to your image config. Particularly the "Jet Database ODBC Support" component.&lt;br /&gt;&lt;br /&gt;"Microsoft Data Access Components (MDAC)" component with all dependencies is also required.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7958679362901215685?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7958679362901215685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7958679362901215685' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7958679362901215685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7958679362901215685'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-19-microsoft-access-database.html' title='XPe tip #19: Microsoft Access database'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5375432277039828195</id><published>2007-04-13T12:32:00.000-07:00</published><updated>2007-04-16T23:51:15.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>XPe Lifecycle</title><content type='html'>I thought Microsoft has covered the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;life cycles&lt;/span&gt; for &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;their&lt;/span&gt; products well enough but questions about it keep coming. A recent &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/0b87128c28880d05/0bb1fc34eded028e?hl=en#0bb1fc34eded028e"&gt;thread&lt;/a&gt; in the newsgroup is a good example.&lt;br /&gt;&lt;br /&gt;Very details answer to this was given out by the Product Team in their blog - &lt;a href="http://blogs.msdn.com/embedded/archive/2006/11/24/xp-embedded-lifecycle-support.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;XP&lt;/span&gt; Embedded &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Lifecycle&lt;/span&gt; Support&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some more helpful links on the subject.&lt;br /&gt;&lt;br /&gt;Life cycle of Service Packs for Microsoft Embedded products is detailed &lt;a href="http://support.microsoft.com/gp/lifesupsps#Windows_Embedded"&gt;here&lt;/a&gt;.&lt;br /&gt;      Here is what it says about Windows Embedded:&lt;br /&gt;         Product Name General Availability Date Service Pack Support Retired Notes&lt;br /&gt;         Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XP&lt;/span&gt; Embedded Service Pack 0 (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;RTM&lt;/span&gt;) 30-Jan-2002 22-Oct-2004&lt;br /&gt;         Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XP&lt;/span&gt; Embedded Service Pack 1 22-Oct-2002 10-Apr-2007&lt;br /&gt;         Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;XP&lt;/span&gt; Embedded Service Pack 2 18-Jan-2005 Not Applicable&lt;br /&gt;         See Note Support ends either 12 months after the next service pack releases or at the end of the product's support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;lifecycle&lt;/span&gt;, whichever comes first. Visit the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;a href="http://support.microsoft.com/lifecycle"&gt;Lifecycle&lt;/a&gt;&lt;/span&gt; page to find the support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;timelines&lt;/span&gt; for your particular product.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/lifecycle/?LN=en-us&amp;p1=3220&amp;amp;x=5&amp;y=10"&gt;Microsoft Support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Lifecycle&lt;/span&gt;&lt;/a&gt; page for Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;XP&lt;/span&gt; Embedded.&lt;br /&gt;&lt;br /&gt;According to &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/acfcf76ec10f35ea?hl=en&amp;"&gt;Shayna Begun&lt;/a&gt; [MS], Feature Pack is not the same as a Service Pack - Feature Pack 2007 did not reset the support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;lifecyle&lt;/span&gt; for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;XPe&lt;/span&gt;.  Regarding the next version of the product, it would be the next version of the Embedded product, so Vista would not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_15"&gt;pertain&lt;/span&gt; here.&lt;br /&gt;Andy &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Allred&lt;/span&gt; [MS] confirmed that as well &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/136ebee539147616?hl=en&amp;"&gt;here&lt;/a&gt;. (you can find the whole thread &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/b22ba4dc377fb947?hl=en"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Just thought I'd gather all the related info in one place.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5375432277039828195?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5375432277039828195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5375432277039828195' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5375432277039828195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5375432277039828195'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-lifecycle.html' title='XPe Lifecycle'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5772869575514608594</id><published>2007-04-13T12:15:00.000-07:00</published><updated>2007-04-16T23:48:28.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #18: Hibernation doesn't work</title><content type='html'>Things that can prevent hibernation from working on your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;runtime&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;    - Some driver conflicts or failures. The best way to fix these is to check the Device Manager to see if any exclamation marks there. Command version of the Device Manager - &lt;a href="http://support.microsoft.com/kb/311272"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;devcon&lt;/span&gt;&lt;/a&gt; - can also be used here. However, I personally prefer &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;FBALog&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;txt&lt;/span&gt; and &lt;strong&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;setupapi&lt;/span&gt;.log &lt;/strong&gt;log files that are created under the %&lt;em&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SystemRoot&lt;/span&gt;%&lt;/em&gt; and %&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SystemRoot&lt;/span&gt;%\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;FBA&lt;/span&gt; folders respectively.&lt;br /&gt;&lt;br /&gt;    - None or a wrong display and GART drivers installed. The same tip here - check the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;setupapi&lt;/span&gt;.log log and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;FBALog&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;txt&lt;/span&gt; files to see why the display driver, if was included and/or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;componentized&lt;/span&gt; for the platform, failed to install.&lt;br /&gt;      Note: Standard VGA driver, that takes place when you don't have native hardware driver installed, doesn't support hibernation.&lt;br /&gt;&lt;br /&gt;   - Some driver states are set to disallow the system going into standby mode. Easiest way to check this is to open a driver properties in Device Manager.&lt;br /&gt;&lt;br /&gt;   - Not enough disk space for hibernation file. Basically check here if the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;hiberfil&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;sys&lt;/span&gt; file is getting created on your target system partition.&lt;br /&gt;&lt;br /&gt;    - Hibernation is not enabled or you are using wrong HAL component. (Check either in TD or with Power CPL at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;runtime&lt;/span&gt;). In TD the hibernation can be enabled on the HAL (PC) component settings page - "Enable hibernattion support" checkbox under "Power Management Settings" section.&lt;br /&gt;&lt;br /&gt;   - Sometimes the "Disk Dump Drivers" component required. (The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;diskdump&lt;/span&gt; driver takes its part instead of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;scsiport&lt;/span&gt; driver when a RAM dump function is requested. It is just limited version in functionality though.)&lt;br /&gt;     Although from my earlier thinking the driver was required for the hibernation to work but in the &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/7a755607aa0e0fcb?hl=en"&gt;newsgroup&lt;/a&gt; it was reported it is not. So, perhaps, it is only needed for the crash memory dumps to work. It doesn't hurt to add this very small driver component, though.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5772869575514608594?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5772869575514608594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5772869575514608594' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5772869575514608594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5772869575514608594'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-18-hibernation-doesnt-work.html' title='XPe tip #18: Hibernation doesn&apos;t work'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1467918219129361112</id><published>2007-04-08T15:44:00.000-07:00</published><updated>2007-04-16T23:48:28.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #17: DST and EWF</title><content type='html'>Pretty old topic but still no really good solution or workaround exists there on how to make DST working properly with the EWF enabled.&lt;br /&gt;&lt;br /&gt;There has a bunch of suggestion been on how to make those &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/search?hl=en&amp;group=microsoft.public.windowsxp.embedded&amp;amp;q=DST"&gt;two live together&lt;/a&gt; posted in the newsgroup: from using undocumented system's &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/msg/1e5eb952380327d0?hl=en&amp;"&gt;RealTimeIsUniversal&lt;/a&gt; flag to making your own time monitoring application that will switch or correct the system time if a DST time switch happens.&lt;br /&gt;&lt;br /&gt;Perhaps, the only workaround that would work correctly is to disable the DST. Well, I can barely call this a workaround but at least with the DST off you won't have issues with the time changing unpredictably.&lt;br /&gt;&lt;br /&gt;How to disable DST? Easy, just set this registry flag at run time:&lt;br /&gt; &lt;em&gt; [HKLM\System\CurrentControlSet\Control\TimeZoneInformation], "DisableAutoDaylightTimeSet"=dword:1&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;On related note, you can mess around time zone settings offline in TD if you explorer the following key:&lt;br /&gt;   &lt;em&gt;[HKLM\System\CurrentControlSet\Control\TimeZoneInformation]&lt;/em&gt;.&lt;br /&gt;More info about this can be found on this XPe tip &lt;a href="http://msdn2.microsoft.com/en-us/embedded/aa731221.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1467918219129361112?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1467918219129361112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1467918219129361112' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1467918219129361112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1467918219129361112'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-17-dst-and-ewf.html' title='XPe tip #17: DST and EWF'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-638211205645804638</id><published>2007-04-06T13:18:00.000-07:00</published><updated>2007-04-16T23:48:28.724-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #16: Can be Eval SLX re-used?</title><content type='html'>Recently I answered the following question in the &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/e0db34b519ed88e8/de4ece51172f2a2f?hl=en#de4ece51172f2a2f"&gt;newsgroup&lt;/a&gt;: is it possible to re-use SLX project created with eval version of the Toolkit with purchased copy of the tools?&lt;br /&gt;&lt;br /&gt;We all know that there is no (easy) way to re-use database of eval installation with the full version of the toolkit. If you use it, you are going to end up with eval runtimes.&lt;br /&gt;&lt;br /&gt;However, using the SLX (original project) create with eval version with either eval or non-eval versions of the toolkit is perfectly fine as long as you follow the following rules:&lt;br /&gt;  - You install the full (non-eval) version of the toolkit properly. You will have to completely uninstall eval version first including database.&lt;br /&gt;  - You re-import all the custom SLDs you've created to support that SLX project in to the non-eval database.&lt;br /&gt;  - You type in the right PID number in the RunTime field on Configuration Settings page of the loaded SLX in non-eval TD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-638211205645804638?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/638211205645804638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=638211205645804638' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/638211205645804638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/638211205645804638'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-16-can-be-eval-slx-re-used.html' title='XPe tip #16: Can be Eval SLX re-used?'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-6526025435221972637</id><published>2007-04-04T22:48:00.000-07:00</published><updated>2007-04-19T11:17:46.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista tips'/><title type='text'>XPe tip #15: More useful tools..</title><content type='html'>Continue finding good stuff on the &lt;a href="http://www.nirsoft.net/"&gt;NirSoft&lt;/a&gt; site.&lt;br /&gt;&lt;br /&gt;Not sure how many times I had to use "at" command on embedded. Especially when I had to launch a command line within LocalSystem context (/interactive switch). Although always had to calculate timing and do a few additional commands in order to schedule and then delete the properly configured "at" command. Now I won't have all this problems with another NirSoft's utility - &lt;a href="http://www.nirsoft.net/utils/atnow.html"&gt;AtNow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some good stuff for doing Window sniffing - from class names to style/ex-styles and etc. Two really nice utilities - &lt;a href="http://www.nirsoft.net/utils/winlister.html"&gt;WinListener&lt;/a&gt; and &lt;a href="http://www.nirsoft.net/utils/winexp.html"&gt;WinExplorer&lt;/a&gt;. The second is really good as it allows you to modify all the windows parameters via GUI instead of messing with the code and SetWindowsPos API calls.&lt;br /&gt;&lt;br /&gt;Tools like &lt;a href="http://www.nirsoft.net/utils/exeinfo.html"&gt;ExeInfo&lt;/a&gt; and &lt;a href="http://www.nirsoft.net/utils/dll_export_viewer.html"&gt;DLL Export Viewer&lt;/a&gt; are also nice. But there are lots of similar tools on the Web. Also, I am a fan of FAR Commander and a few plug-ins there do similar PE analisys and produces even better, more detail and visual results.&lt;br /&gt;&lt;br /&gt;In driver and service area - &lt;a href="http://www.nirsoft.net/utils/serviwin.html"&gt;ServiWin&lt;/a&gt;. Not as good as &lt;a href="http://support.microsoft.com/kb/311272"&gt;devcon&lt;/a&gt; but nice GUI makes it easier to see and filter out specific driver services. Also, it shows dependencies which is realy helpful on XP Embedded.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.nirsoft.net/utils/cprocess.html"&gt;CurrProcess&lt;/a&gt; tool is an extremely simplified clone of &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/ProcessExplorer.mspx"&gt;ProcessExplorer&lt;/a&gt; from sysinternals. Advantages - small and requires less dependencies in the image.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/axhelper.html"&gt;ActiveXHelper&lt;/a&gt; could be considered as an embedded [read: simplified] version of Microsoft OLEView tool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/dump_edid.html"&gt;DumpEDID&lt;/a&gt; and &lt;a href="http://www.nirsoft.net/utils/monitor_info_view.html"&gt;MonitorInfoView&lt;/a&gt; -interesting tools. Don't yet know how I am going to use them but I will.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/usb_devices_view.html"&gt;USBDeview&lt;/a&gt; - useful, no doubt. Especially the stop/disconnect function. Although if I needed more info on a particular USB device or even a deep look into the interfaces and protocols exposed by the device, I would use an USB Analyzer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/shexview.html"&gt;ShellExView&lt;/a&gt; - could be useful when dealing with Shell extensions and namespaces issues.&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/opened_files_view.html"&gt;OpenedFilesView&lt;/a&gt; - I am probably going to switch to this from similar sysinternals tools.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Many, many more tools there. Explore the &lt;a href="http://www.nirsoft.net/utils"&gt;utils part&lt;/a&gt; of the website by yourself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-6526025435221972637?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/6526025435221972637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=6526025435221972637' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6526025435221972637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6526025435221972637'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-15-more-useful-tools.html' title='XPe tip #15: More useful tools..'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7327876515769749062</id><published>2007-04-04T22:21:00.000-07:00</published><updated>2007-04-20T10:06:34.838-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #14: The best command line ever</title><content type='html'>While googling for some API call info I recently hit one website - &lt;a href="http://www.nirsoft.ne/"&gt;NirSoft&lt;/a&gt; - that had a lot of nice tools and source code very useful for hacking and etc. We all know that we often have to do reverse engineering on embedded in order to understand, use or fix some system components functionality.&lt;br /&gt;&lt;br /&gt;I am not going to talk about all the tools on that website but just one that made my day - &lt;a href="http://www.nirsoft.net/utils/nircmd2.html"&gt;NirCmd&lt;/a&gt;. Note: it is freeware! So much functionality in just one relatively small utility.&lt;br /&gt;&lt;br /&gt;I have written myself tons of tools and utilities for embedded, even merged some of them. But never had so many functions implemented in one command line application.&lt;br /&gt;&lt;br /&gt;The function I personally loved is - changing display settings on the fly. You just pass in the resolution and bit rate and you are done. Best of all, in some intermittent version they added refresh rate parameter.&lt;br /&gt;&lt;br /&gt;Comment: the tool works great on Vista as well. This makes my life on Vista MCE much easier. Basically I can play with any TV (SD, HD, etc.) and have no wear the resolution rate is not supported or, on embedded, having no way to fix resolution problems without Display Control Panel applet included in the image.&lt;br /&gt;&lt;br /&gt;Another tools that may be useful in changing screen resolutions and, more important, screen refresh rate is &lt;a href="http://www.vrdevelopers.de/downloads/chres-win-v0.3.zip"&gt;ChRes.exe&lt;/a&gt;. This utility is much simpler and all it does is calling to ChangeDisplaySettingsEx API. More about this tool you can find &lt;a href="http://www.vrdevelopers.de/content/view/15/44/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7327876515769749062?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7327876515769749062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7327876515769749062' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7327876515769749062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7327876515769749062'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-14-best-command-line-ever.html' title='XPe tip #14: The best command line ever'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-6535711912363138894</id><published>2007-04-03T15:47:00.000-07:00</published><updated>2007-04-16T23:48:28.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #13: SID issues</title><content type='html'>We all know about possible issues that duplicated SIDs can create in your system setup and open a security hole on the network [ok, if you don't, read &lt;a href="http://support.microsoft.com/default.aspx?scid=kb%3bEN-US%3b314828"&gt;this&lt;/a&gt;]. Probably the best explanation to these issues were given by Mark Russinovich and Bryce Cogswell on the documentation page for &lt;a href="http://www.microsoft.com/technet/sysinternals/Security/NewSid.mspx"&gt;NewSID&lt;/a&gt; tool.&lt;br /&gt;&lt;br /&gt;Anyway, I am not writing this to start another thread on the SID duplication problem (if you Google for it, there are tons of similar discussion on the subject). I have recently answered a question in the newsgroup where the poster was surprised by not seeing the SIDs under HKEY_USERS key. It appeared that he was looking for long GUID-like subkeys but was playing with Minlogon based image. Here is the &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/24e499ad9f843647/8f8a103d3b03d1cf?hl=en#8f8a103d3b03d1cf"&gt;thread&lt;/a&gt;. As you may read, the poster was looking for actually Admin or User account SID which is not supported by Minlogon.&lt;br /&gt;&lt;br /&gt;User SID duplication is not much an issue in Minlogon environment. However, there is still computer SID. You can find that SID somewhere in SAM hive (&lt;em&gt;HKLM\SECURITY\SAM&lt;/em&gt;), typically listed in the list of Members keys. Much easier way to find out that SID though is to run &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/psgetsid.mspx"&gt;PsGetSid &lt;/a&gt;utility from sysinternals.com. Here is where you can download it as a part of &lt;a href="http://download.sysinternals.com/Files/PsTools.zip"&gt;PsTools&lt;/a&gt; package.&lt;br /&gt;&lt;br /&gt;Here is a list of &lt;a href="http://msdn2.microsoft.com/en-us/library/aa379649.aspx"&gt;well-known SIDs&lt;/a&gt; defined by Microsoft.&lt;br /&gt;The one you're definitely going to catch with Minlogon image is &lt;em&gt;S-1-5-18&lt;/em&gt;, a special account used by the operating system (aka LocalSystem account).&lt;br /&gt;&lt;br /&gt;For Administrator account you would be looking for something like &lt;em&gt;S-1-5-21-&lt;strong&gt;191058668-193157475-1542849698&lt;/strong&gt;-500&lt;/em&gt; on Winlogon images only. The only bolded part is machine dependent and generated randomly. All user accounts on the same system are going to have incrementally increased four last digits of the SID shown above. (1000, 1001, etc. instead of 500).&lt;br /&gt;You can see the list of SIDs assigned to the user accounts on your system by exploring subkeys under&lt;em&gt; [HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList]&lt;/em&gt; key.&lt;br /&gt;&lt;br /&gt;And last, the good intro into &lt;a href="http://msdn2.microsoft.com/en-us/library/aa379597.aspx"&gt;what SID is on MSDN&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-6535711912363138894?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/6535711912363138894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=6535711912363138894' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6535711912363138894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6535711912363138894'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-13-sid-issues.html' title='XPe tip #13: SID issues'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7503939189075410460</id><published>2007-04-02T14:25:00.000-07:00</published><updated>2007-04-16T23:48:28.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #12: SetupAPI - nothing is more helpful than logging!</title><content type='html'>To continue my previous post to this blog I want to mention another great tool that is always available to us, XPe developers, on target systems. When I say always I assume the right components are included - kernel and "Primitive: Setupapi". But you can barely find an XPe image that doesn't have the last component added.&lt;br /&gt;&lt;br /&gt;Anyway, what is the SetupAPI log? It is a set of API functions that a setup application calls to perform application installation operations. The functions are available to develop a setup application that can install any type of application, from driver to user mode app. MSDN has a big and nice section dedicated to &lt;a href="http://msdn2.microsoft.com/en-us/library/aa376967.aspx"&gt;Setup API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since most of the issues we are fighting with on XPe are often related to components we ain't provided with source code for, especially third party drivers, having at least a way to analyze failures of those components with the logging tool is a great thing.&lt;br /&gt;&lt;br /&gt;Anyway, some quick details for those who never dealt with Setu API logs. By Default the log is centrally located under %windir% folder and called &lt;strong&gt;setupapi.log&lt;/strong&gt;. There are some registry entries to set up and configure how you want the logging to be performed. E.g., the most important value for us is logging level. Often the default log level is not enough to find out what's missing or went wrong with the image. So, increasing the level may help to get more information about the failures and possible get on the right track fixing them.&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://www.osronline.com/DDKx/install/troubleshoot_7s6f.htm"&gt;instructions&lt;/a&gt; on how you increase the log level. SourceQuest also has a freeware &lt;a href="http://www.sourcequest.com/download/suplog.htm"&gt;GUI utility&lt;/a&gt; that allows you to modify SetupAPI configuration parameters without remembering all the configuration registry paths. That utility - suplog.exe, which is already there and available for &lt;a href="http://www.sourcequest.com/download/suplog-1_01-install.exe"&gt;download&lt;/a&gt;, aims to simplify the capture and display of SetupAPI logs. BTW, changing most of the settings is dynamic and will be picked up by the new loaded instance of the app being installed and analyzed.&lt;br /&gt;&lt;br /&gt;Quick note here. There is a very useful option for SetupAPI available that allows you to direct the logging to debugger output that you can easy capture with &lt;a href="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx"&gt;DebugView&lt;/a&gt; tool from sysinternals.com. It gives you a nice control over the log for your only component that you are trying to install at run time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7503939189075410460?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7503939189075410460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7503939189075410460' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7503939189075410460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7503939189075410460'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-12-setupapi-nothing-is-more.html' title='XPe tip #12: SetupAPI - nothing is more helpful than logging!'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-3939101838888926780</id><published>2007-04-02T13:50:00.000-07:00</published><updated>2007-04-16T23:48:28.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #11: Debugging - VS2005 and WinDbg</title><content type='html'>On Embedded devices we are often &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;required&lt;/span&gt; to do some debugging various issues from driver install to application flow. With regards to applications and anything &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;running&lt;/span&gt; in user mode everything is simple and straightforward - just stick to Microsoft Visual Studio (better the latest and greatest - VS2005 or coming &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Orcas&lt;/span&gt;) with &lt;a href="http://support.microsoft.com/kb/318041/en-us"&gt;Remote Debugging &lt;/a&gt;feature (&lt;a href="http://support.microsoft.com/kb/908099/en-us"&gt;firewall caveat on SP2&lt;/a&gt;). But how to handle driver debugging?&lt;br /&gt;&lt;br /&gt;No easy &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;answer&lt;/span&gt; there. The only option is probably &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;KD&lt;/span&gt; (Kernel Debugger). There are a few debugger on the market (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;WinDbg&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SoftIce&lt;/span&gt;, etc.) but I tend to think for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;XP&lt;/span&gt; and later only &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;WinDbg&lt;/span&gt; has the real power to keep up with Microsoft changing environment. The latest version (&lt;a href="http://www.microsoft.com/whdc/devtools/debugging/whatsnew.mspx"&gt;6.6.7.5&lt;/a&gt; to the moment) has lots of nice new features, although for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;XPe&lt;/span&gt; development we probably only need the basics. So, the winner is &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;WinDbg&lt;/span&gt;&lt;/a&gt; (obviously, only 32-bit version is interesting option for us, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;XPe&lt;/span&gt; developers).&lt;br /&gt;&lt;br /&gt;It requires a little bit of effort to setup the &lt;a href="http://www.wd-3.com/archive/RemoteDbg.htm"&gt;debugger to connect remotely &lt;/a&gt;your development PC, where you install the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;WinDbg&lt;/span&gt; tools, and target machine. Here is how you can enable &lt;a href="http://msdn2.microsoft.com/en-us/library/ms997643.aspx"&gt;remote debugging&lt;/a&gt; on SP2 (firewall setup, policies and etc.). And don't forget to &lt;a href="http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx"&gt;setup&lt;/a&gt; the &lt;a href="http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx"&gt;symbols&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;XP&lt;/span&gt;(e) you'd probably stick to COM or 1394 debugging. For Vista targets I loved the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;USB&lt;/span&gt; 2.0 kernel debugging support feature.&lt;br /&gt;&lt;br /&gt;And you can certainly use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;WinDbg&lt;/span&gt; to &lt;a href="http://support.microsoft.com/kb/824344/en-us"&gt;debug services&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Very nice tutorial and lots of useful info about &lt;a href="http://www.codeproject.com/debug/windbg_part1.asp"&gt;debugging with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;WinDbg&lt;/span&gt;&lt;/a&gt; I happened to fin on my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;favortie&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;CodeProject&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-3939101838888926780?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/3939101838888926780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=3939101838888926780' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3939101838888926780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3939101838888926780'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/04/xpe-tip-11-debugging-vs2005-and-windbg.html' title='XPe tip #11: Debugging - VS2005 and WinDbg'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5904016059165893934</id><published>2007-03-31T23:00:00.000-07:00</published><updated>2007-04-19T11:22:17.153-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #10: Group Policies for locked down OS</title><content type='html'>When we want to lock down an embedded image that uses a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XP&lt;/span&gt; based OS, we often want to use Group Policy settings. But how to search and know which policy options are good to be used specifically for locking down the OS? Well, the first answer is - search the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XPe&lt;/span&gt; newsgroup archive. We have discussed variety of group policy related issues there.&lt;br /&gt;&lt;br /&gt;Just recently I unintentionally came across this very helpful KB article: &lt;a href="http://support.microsoft.com/kb/278295"&gt;http://support.microsoft.com/kb/278295&lt;/a&gt;. It basically lists most of the Group Policy settings that are good to be used to lock down a Terminal Server session on a Microsoft Windows Server 2003-based or Microsoft Windows 2000-based computer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7821C32F-DA15-438D-8E48-45915CD2BC14&amp;displaylang=en"&gt;Here&lt;/a&gt; you will find another beautiful page (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7821C32F-DA15-438D-8E48-45915CD2BC14&amp;amp;displaylang=en"&gt;Group Policy Settings Reference&lt;/a&gt;) where you can download Excel document with most of the Group Policy listed with, more important, corresponding registry entries mentioned. Very helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5904016059165893934?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5904016059165893934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5904016059165893934' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5904016059165893934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5904016059165893934'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-10-group-policies-for-clocked.html' title='XPe tip #10: Group Policies for locked down OS'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5323318451149307745</id><published>2007-03-30T22:47:00.000-07:00</published><updated>2007-04-16T23:48:28.725-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #9: Disable Boot / Shutdown / Logon / Logoff system status messages</title><content type='html'>Often there is a need on an embedded image to disable all [most of] the screens that have Microsoft branding on them or simply don't comply with the embedded device usage and GUI specs provided. Ideally, we'd want to replace the branding on those screens. This implies to text and graphics used there. However, the way XP OS is implemented (please note - this is changed in Vista!) there is no legal way to replace those screens without messing [hacking] with resources of the Microsoft binaries.&lt;br /&gt;&lt;br /&gt;Anyway, there is still one Group policy option exists that is helpful at least to disable some screens. So if you want to disable Boot / Shutdown / Logon / Logoff system status messages (typically shown by Winlogon), just set the following registry entry:&lt;br /&gt;&lt;em&gt;[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System],"DisableStatusMessages"=dword:1&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;You can pre-set the value in TD (your own component or Extra registry section) or at run time (a command during FBA, RegMigrate undocumented feature of FBA, Run/RunOnce request, Explorer Startup item and etc.).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5323318451149307745?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5323318451149307745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5323318451149307745' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5323318451149307745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5323318451149307745'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-9-disable-boot-shutdown-logon.html' title='XPe tip #9: Disable Boot / Shutdown / Logon / Logoff system status messages'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1195384266951895510</id><published>2007-03-30T22:42:00.000-07:00</published><updated>2007-04-16T23:48:28.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #8: Show Desktop icons</title><content type='html'>This is a simple and known one.&lt;br /&gt;Just want to mention the appropriate registry entry.&lt;br /&gt;&lt;br /&gt;The value for the Group policy option that allows you to enable or disable the Show Desktop Icons feature of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XP&lt;/span&gt;(e) is stored here:&lt;br /&gt;&lt;em&gt;[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;HKCU&lt;/span&gt;\Software\Microsoft\Windows\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CurrentVersion&lt;/span&gt;\Policies\Explorer],"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;NoDesktop&lt;/span&gt;"=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;dword&lt;/span&gt;.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1195384266951895510?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1195384266951895510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1195384266951895510' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1195384266951895510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1195384266951895510'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tips-8-show-desktop-icons.html' title='XPe tip #8: Show Desktop icons'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7143902741001425300</id><published>2007-03-30T22:31:00.000-07:00</published><updated>2007-04-19T11:16:47.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #7: Hide drives in Explorer shell</title><content type='html'>I know this is an old one but questions about how to accomplish that are still showing up in the newsgroup once in a while.&lt;br /&gt;The question is how to hide all local drives or some drives in the system that uses Explorer as the shell. Typically the question comes up on the way to lock down Explorer shell based embedded system.&lt;br /&gt;&lt;br /&gt;The answer is simple - use Group Policy. There is a Group Policy exists that allows you to hide particular drives in My Computer folder of the system for specified user accounts. As with almost all Group policy settings, there is corresponding registry option that is doubled in global and per user branches:&lt;br /&gt;&lt;em&gt;User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]&lt;/em&gt;&lt;br /&gt;&lt;em&gt;System Key: [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Value Name: NoDrives&lt;/em&gt;&lt;br /&gt;&lt;em&gt;Data&lt;/em&gt;&lt;em&gt; Type: REG_DWORD (DWORD Value)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The "NoDrives" value uses a 32-bit word to define local and network drive visibility for each logical drive in the computer. The lower 26 bits of the 32-bit word correspond to drive letters A through Z. Drives are visible when set to 0 and hidden when set to 1.&lt;br /&gt;If your not happy working in Hex, add these decimal numbers to hide the drive(s):&lt;br /&gt;A: 1, B: 2, C: 4, D: 8, E: 16, F: 32, G: 64, H: 128, I: 256, J: 512, K: 1024, L: 2048, M: 4096, N: 8192, O: 16384, P: 32768, Q: 65536, R: 131072, S: 262144, T: 524288, U: 1048576, V: 2097152, W: 4194304, X: 8388608, Y: 16777216, Z: 33554432, ALL: 67108863&lt;br /&gt;&lt;br /&gt;For example to hide drive A and drive D, you would add 1 (A) + 8 (D) which means the value should be set to "9".&lt;br /&gt;To disable all the drives set the value to "67108863".&lt;br /&gt;&lt;br /&gt;The above only hide the drives in My Computer. Sometimes, however, preventing access to the contents of selected drives may work even better in a locked down OS. Then you'd want to use another registry value there - NoViewOnDrive. The same registry path both in HKLM and HKCU branches. Its value is structured the same way as the NoDrives's one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7143902741001425300?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7143902741001425300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7143902741001425300' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7143902741001425300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7143902741001425300'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tips-7-hide-drives-in-explorer.html' title='XPe tip #7: Hide drives in Explorer shell'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5767563588627735688</id><published>2007-03-29T22:06:00.000-07:00</published><updated>2007-04-16T23:48:28.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #6: Completely hide the Taskbar</title><content type='html'>On embedded XP we often (almost always) want to customize shell UI. The best way to do that is to get rid of Explorer shell and implement your own custom shell application. But if you don't have enough skills to write often a complex application, or you simply don't have enough time to do so, or, worse, Explorer shell must be running in order to get some functionality out of the box. Many examples to this have been posted to the XPe newsgroup, e.g. Autoplay feature.&lt;br /&gt;So, what if you must have Explorer shell running but you still have to lock down OS and avoid users messing with files on disk and etc.&lt;br /&gt;You can always have your own application running in full screen mode and covering all other windows from Microsoft (Desktop, Taskbar, etc.). But we all know that even with a proper Group Policy setup you won't be able to completely hide everything. There may also be cases where Taskbar will be showing up on the top of all other windows in the system regardless of the system settings. Only cure is to get control in your hands and completely hide the Taskbar (no, don't kill it - you still need Explorer's functionality). Here the tricks I came up with for hiding Taskbar.&lt;br /&gt;&lt;br /&gt;First of all, lets pre-setup in TD the auto-hiding behaviour of the Taskbar. Although it sounds easy - just set the right registry flag - but it is not. For most Taskbar and some Start Menu options the Explorer keeps the settings stored as a set of bits in some registry values. Certainly, those bits are not documented. No problem, we always have helpful Regmon and by spending a little bit of time you'll figure out the interesting registry entry is &lt;em&gt;[HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2],"Settings".&lt;/em&gt; As I mentioned earlier, it is a binary structure. Long time ago I posted a &lt;a href="http://www.xpefiles.com/viewtopic.php?t=113"&gt;script&lt;/a&gt; on xpefiles.com that changed the right bits of that value to make the Taskbar auto-hiding enabled. The readme of that posting would explain how to launch the script properly and set it up in TD.&lt;br /&gt;&lt;br /&gt;Now lets go deeper and just disable the Taskbar once and for all.&lt;br /&gt;What you want to do here is just create and compile a simple app that makes a call to FindWindow() on "Shell_TrayWnd" window class name and then just do a ShowWindow(SW_HIDE) for this window handle. The same you should do with "Progman" and Desktop windows. You better also disable the windows (EnableWindow(FALSE)) before hiding.&lt;br /&gt;&lt;br /&gt;I actually do have this app written. The code is far from bring production quality (it was just an experiment, after all!) but I will share it with you, folks, as soon as I get my hands on that drive (I took it out and put it on a shelf here quite a while ago). Will do that very soon, I think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5767563588627735688?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5767563588627735688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5767563588627735688' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5767563588627735688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5767563588627735688'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-6-completely-hide-taskbar.html' title='XPe tip #6: Completely hide the Taskbar'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7755122823955140641</id><published>2007-03-29T00:48:00.000-07:00</published><updated>2007-04-16T23:52:06.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCE tips'/><title type='text'>MCE tip #1: TBP (ToolBar Persisted)</title><content type='html'>I have recently had to investigate whether it is possible to remove mouse-over toolbar from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MCE&lt;/span&gt; (Media Center Edition application). That toolbar seems to have similar (actually, the same) implementation both on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MCE&lt;/span&gt; 2005 and Vista &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MCE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;On Vista &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MCE&lt;/span&gt; (not sure about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MCE&lt;/span&gt; 2005 - didn't have time to check it out there) there is a nice item under Tasks menu - "Media only" - which purpose is basically to make the app to run full screen and hide the mouse toolbar at the right top corner of the application window. This option however doesn't persist. If you restart the application or simply reboot, the mouse toolbar comes back (it only appears when you move mouse cursor while the app is running, of course).&lt;br /&gt;&lt;br /&gt;I got around this by doing the following two things:&lt;br /&gt;- making my monitoring agent application (see the other post "Vista tip #1") to watch on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;MCE&lt;/span&gt; windows (certainly had to hack around a little bit first to get to know all the necessary window class names and etc.). If something wrong &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;happens&lt;/span&gt; to the full screen &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MCE&lt;/span&gt; app window, I set it back - always on top, full screen, foreground, etc.&lt;br /&gt;- completely removing the mouse support from the image. Not PS2 nor an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;USB&lt;/span&gt; mouse would work there, hence no way for end user to mess with the mouse-over toolbar of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;MCE&lt;/span&gt; app.&lt;br /&gt;(I needed the second also to get rid of the mouse cursor there).&lt;br /&gt;&lt;br /&gt;Anyway, this tip is not about how to remove the toolbar. It is rather opposite - how to make it persistent so that all the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MCE&lt;/span&gt; controls including the mouse-over toolbar are always there. (in PC mode users may like it)&lt;br /&gt;For &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;MCE&lt;/span&gt; unattended setup there is an option (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;TBP&lt;/span&gt;) in XML file that allows you to specify whether mouse toolbars always appear in the Windows Media Center &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;UI&lt;/span&gt;: &lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/524ca8fc-af68-4e5a-9d68-3cc678a270091033.mspx"&gt;http://technet2.microsoft.com/WindowsVista/en/library/524ca8fc-af68-4e5a-9d68-3cc678a270091033.mspx&lt;/a&gt;&lt;br /&gt;Now, where is the registry key is located? Here it is: &lt;em&gt;[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;HKCU&lt;/span&gt;\Software\Microsoft\Windows\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;CurrentVersion&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;MediaCenter&lt;/span&gt;\Capabilities],"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;TBP&lt;/span&gt;"=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;dword&lt;/span&gt;:1&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7755122823955140641?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7755122823955140641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7755122823955140641' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7755122823955140641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7755122823955140641'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/mce-tip-1-tbp-toolbar-persisted.html' title='MCE tip #1: TBP (ToolBar Persisted)'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7998625987724243776</id><published>2007-03-27T15:19:00.000-07:00</published><updated>2007-04-16T23:48:28.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #5: Direct IO operations from Win32 mode</title><content type='html'>Sometimes there may be a need to be able to control some hardware directly on an embedded device without having the appropriate device driver. After all, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XPe&lt;/span&gt; is all about RAPID development and you may not have enough time or skills to develop the driver.&lt;br /&gt;&lt;br /&gt;This is where some nice 3rd party tools like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;DirectIO&lt;/span&gt; come to the picture. Basically such applications (include their own drivers) will allow you to stick to Win32 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;API&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;CreateFile&lt;/span&gt; and etc.) and be able to make a direct queries to the selected and configured device (read/write/configuration/enumeration/etc.).&lt;br /&gt;&lt;br /&gt;Long time ago I posted the list of some of those apps available on Internet to the newsgroup. Here is what &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/b270230b12ff240a?hl=en"&gt;that post&lt;/a&gt; mentioned:&lt;br /&gt;- &lt;a href="http://www.internals.com/utilities/winio.zip"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;WinIO&lt;/span&gt;&lt;/a&gt; from internals.com,&lt;br /&gt;- &lt;a href="http://www.direct-io.com/Direct-IO/directio.exe"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DirectIO&lt;/span&gt;&lt;/a&gt; from direct-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;io&lt;/span&gt;.com,&lt;br /&gt;- &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;DriverLinx's&lt;/span&gt; &lt;a href="http://www.driverlinx.com/DownLoad/DlPortIO.htm"&gt;Port I/O Driver&lt;/a&gt;. &lt;a href="http://www.xpefiles.com/viewtopic.php?t=139"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DLPortIO&lt;/span&gt;&lt;/a&gt; component on &lt;a href="http://www.xpefiles.com/"&gt;http://www.xpefiles.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you need it, check out all of them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7998625987724243776?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7998625987724243776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7998625987724243776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7998625987724243776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7998625987724243776'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip5-direct-io-operations-from.html' title='XPe tip #5: Direct IO operations from Win32 mode'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-1033743541347713981</id><published>2007-03-27T00:30:00.000-07:00</published><updated>2007-04-16T23:48:28.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #4: Image restore - general idea</title><content type='html'>While posting to the newsgroup today I described some &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/03540bdee8808425/394f82e9ae1ab0c2?lnk=raot&amp;hl=en#394f82e9ae1ab0c2"&gt;common rules&lt;/a&gt; (maybe not rules but thoughts) that might be helpful to follow while creating an image that is to be used in a restore scenario for your device.&lt;br /&gt;&lt;br /&gt;In general the idea is simple - you have to go offline to be able to copy over/restore/replace the current XP(e) based OS. This means you want to boot another image of yours [&lt;em&gt;off a XPe or PE bootable CD for instance, or bootable UFD, or from another, better hidden, partition on the same hard drive or from another hidden hard drive, or do a remote boot for a DOS/XPe/PE image, etc.&lt;/em&gt;] and be able to copy the *main* XPe image over to the target storage.&lt;br /&gt;Obviously, for wiping out disk you can use delete [CMD's *del*] or format or diskpart or whatever tool you like and/or required by your system security spec (maybe you need to clean every single cluster on the hard disk before the restore).&lt;br /&gt;It may be better to use &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;DisplayLang=en"&gt;robocopy&lt;/a&gt; for copying files than xcopy. There are other great and reliable 3rd party tools but not free (e.g., &lt;a href="http://www.xxcopy.com"&gt;xxcopy&lt;/a&gt;). Or you can pull the image down from a network if acceptable and exists.&lt;br /&gt;If the restoration image needed to be compressed and/or encrypted (for saving some space or to use an invulnerable encryption) you could always use either one of Resource Kit or PE tools or some other 3rd party tools (freeware is preferable, of course). The cabarc is an example here. Or you can use built-in NTFS compression if the underlying restoration media allows that (e.g., UFD or HDD approach).&lt;br /&gt;Another point should be made about the restore-bootable image itself. If PE used, you may want to remove all the unnecessary extra packages from the image before sysprep. If XPe based, just create a small footprint image with a very limited number of components to support basic operations such as file system operations and/or network [MS or base TCP/IP] and/or whatever custom component dependencies you are adding there. Likely the image should be Minlogon based with either a custom shell or CMD shell. No need to resolve all the platform drivers in that image since you can always disable the hardware wizard and PnP system popups.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-1033743541347713981?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/1033743541347713981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=1033743541347713981' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1033743541347713981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/1033743541347713981'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-4-image-restore-general-idea.html' title='XPe tip #4: Image restore - general idea'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7409896363003118559</id><published>2007-03-26T15:31:00.000-07:00</published><updated>2007-04-16T23:51:15.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>XPProEmulation update: "ghost" Kenel-FP1 and CompactPCI stack</title><content type='html'>Thanks to &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/browse_thread/thread/f6b0cf43f47265f7/eb2e51c508885c77?lnk=raot&amp;hl=en#eb2e51c508885c77"&gt;Jimt&lt;/a&gt;, a couple of issues were found, identified and fixed in the &lt;a href="http://www.xpefiles.com/viewtopic.php?t=972"&gt;XPProEmulation&lt;/a&gt; image.&lt;br /&gt;&lt;br /&gt;The main issue was that a weird "Kenel-FP1" component was appearing in TD during dependency check for those who used XPProEmulation project for FP2007. The strangest thing was that myself I couldn't reproduce the issue, although I did see that component mentioned in the SLX when I did a binary unicode search in the file.&lt;br /&gt;&lt;br /&gt;After some investigation it appeared that most likely it was me who played too much with CTP1 and CTP2 versions of FP2007 and accidentally brought in and left the R3300 version of the "1394 Kernel Debugger Support Library" component that was dependent on the "ghost" Kenel-FP1 component. Well, truly speaking, it is the TD auto-upgrader who couldn't really downgrade that component when I went from CTPx to RTM of FP2007, but obviously I am responsible for any bug in XPProEmulation anyway :-)&lt;br /&gt;&lt;br /&gt;Anyway, I've fixed the Kenel-FP1 issue and uploaded the updated version of the &lt;a href="http://www.xpefiles.com/viewtopic.php?p=1381#1381"&gt;SLX &lt;/a&gt;on &lt;a href="http://www.xpefiles.com/"&gt;www.xpefiles.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Long time ago I had to make a decision to include CompactPCI stack solely due to the reason that the "CompactPCI Hot Swap Support" is a "software" component and I wanted to include it into the project. This component, however, requires some hardware related stuff ("Generic CompactPCI Chassis" and "Generic CompactPCI CPU board" components) and I resolved them to minimize the effort and build errors for the devs who're going to mess around the XPProEmulation.&lt;br /&gt;Quite frankly, so far I haven't seen a need for the CompactPCI stack being included so I am changing my mind now and moving that stack out the project. The latest updated SLX on xpefiles.com has all three components disabled.&lt;br /&gt;The readme.txt, updated with the project, reflects all the changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7409896363003118559?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7409896363003118559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7409896363003118559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7409896363003118559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7409896363003118559'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpproemulation-update-ghost-kenel-fp1.html' title='XPProEmulation update: &quot;ghost&quot; Kenel-FP1 and CompactPCI stack'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4850106516426982774</id><published>2007-03-26T14:34:00.000-07:00</published><updated>2007-04-16T23:51:42.042-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MCE news and info'/><title type='text'>MCE links</title><content type='html'>I am now getting into the exciting world of media. More precisely, Microsoft Media.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MCE&lt;/span&gt; (Media Center application) is really great. However, as any other piece of software, still requires some tweaking often to get the desired behaviour or hidden functionality.&lt;br /&gt;&lt;br /&gt;I will start here from listing my favorite blogs on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MCE&lt;/span&gt; topics:&lt;br /&gt;&lt;a href="http://mediacenter.mattgoyer.com/"&gt;Matt &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Goyer's&lt;/span&gt; blog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/chrisl"&gt;Chris &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Lanier's&lt;/span&gt; Blog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://iandixon.spaces.live.com/"&gt;Ian Dixon's blog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.retrosight.com/default.aspx"&gt;Charlie Owen's blog&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.salloway.org.uk/mceblog"&gt;Mark's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MCE&lt;/span&gt; Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some useful links about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;MCE&lt;/span&gt; as well:&lt;br /&gt;&lt;a href="http://thegreenbutton.com/"&gt;The Green Button&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will continue adding links to the above list time to time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4850106516426982774?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4850106516426982774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4850106516426982774' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4850106516426982774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4850106516426982774'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/mce-links.html' title='MCE links'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2112401174992023142</id><published>2007-03-24T22:19:00.000-07:00</published><updated>2007-04-16T23:52:30.152-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista tips'/><title type='text'>Vista tip #1: Dialog/message box auto-reply</title><content type='html'>For those who is interested...&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://msdn2.microsoft.com/en-us/library/ms940850.aspx"&gt;EnableDefaultReply&lt;/a&gt; functionality works ok on Vista [tested on Ultimate]. Note: the same way as on XP you don't really need to reboot or logoff to get that registry entry change in affect. The registry value gets read every time the MessageBox API is called.&lt;br /&gt;&lt;br /&gt;There is also so-called &lt;a href="http://msdn2.microsoft.com/en-us/library/ms650910.aspx"&gt;Task Dialog&lt;/a&gt; API that is new to Vista. Nice and fancy thing but is there a way to intercept/suppress a task dialog system-wide? Looking for a registry entry or something similar to what's been done for MessageBox. Obviously, to answer that we need to go deep with a debugger and start somewhere around TaskDialogIndirect call. Will take some time to investigate this, I am sure.&lt;br /&gt;Meanwhile I just wrote a watch-dog applicaiton that takes care of MessageBox amd TaskDialog windows in the system. Had some troubles to make it to work as a service (you know, all the services &lt;strong&gt;finally&lt;/strong&gt; were moved from all applications to a separate Session 0 in Vista) but fixed that in a nice way.&lt;br /&gt;Call me picky though but I still want to find a workaround (read: hackaround) to be able to suppress or, better, auto-reply the task dialogs by setting a registry flag.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2112401174992023142?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2112401174992023142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2112401174992023142' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2112401174992023142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2112401174992023142'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/vista-tricks.html' title='Vista tip #1: Dialog/message box auto-reply'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-4758256382548054179</id><published>2007-03-24T22:04:00.000-07:00</published><updated>2007-04-16T23:48:28.726-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #3: XPProEmulation</title><content type='html'>This one is getting popular on &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/topics?lnk=gschg&amp;hl=en"&gt;the newsgroup&lt;/a&gt;. I keep often advise people who got stuck with some tough dependency problems to try to use my &lt;a href="http://www.xpefiles.com/viewtopic.php?t=972"&gt;XP Pro Emulation&lt;/a&gt; project. Yes, it is huge project and still requires some work to adopt to your own hardware platform. But the benefit is nice - you will know whether your app or driver will work on XPe for sure.&lt;br /&gt;&lt;br /&gt;here is what I say in the project description (readme.txt included within the same zip that holds the SLX):&lt;br /&gt;&lt;em&gt;Purpose&lt;/em&gt;: Emulation of XP Pro OS using XPe Repository software components (2024 components!). Note; the number of components included keeps changing release to release but always above 2000.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Method&lt;/em&gt;: CMI automated script was used to add all "&lt;em&gt;Software&lt;/em&gt;" based components from XPe database to the SLX project configuration. A few "&lt;em&gt;Hardware&lt;/em&gt;" components were also added.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Tested&lt;/em&gt;: "&lt;em&gt;Standard PC&lt;/em&gt;"-based configuration as well as "&lt;em&gt;ACPI Uniprocessor PC&lt;/em&gt;"-based configurations tested with ACPI-compliant x86 platform (AMD, 512RAM, ...).&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Recommendations&lt;/em&gt;:&lt;br /&gt;           Turn OFF the "&lt;em&gt;Auto-resolve Dependency&lt;/em&gt;" option in TD. If you have the option on, it will add/remove/modify some important and/or unnecessary components to/from/in the Configuration. this is quite old requirement and you may not need to follow it since with FP2007 version of the project the build got much cleaner.&lt;br /&gt;&lt;br /&gt;           Run TAP on your target device and include all the component dependencies from the result macro component to your image configuration. Better do the Dependency Check and then manually resolve all necessary tasks. Modify "&lt;em&gt;Target Device Settings&lt;/em&gt;" in order to build the image for your test hardware platform configuration. You may add/remove any components to/from the build if needed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There have been a number of &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/search?hl=en&amp;group=microsoft.public.windowsxp.embedded&amp;amp;q=XPProEmulation"&gt;threads&lt;/a&gt; in the newsgroup about that project. Read them if you have time.&lt;br /&gt;&lt;br /&gt;If you plan on using the SLX project, I beg you - only use FP2007 toolkit. Otherwise I predict you will be sending me emails asking why the project is so damn slow to load and take so long to build with SP1 and SP2 tools and so often crashes there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-4758256382548054179?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/4758256382548054179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=4758256382548054179' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4758256382548054179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/4758256382548054179'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-3-xpproemulation.html' title='XPe tip #3: XPProEmulation'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-3377605337677858595</id><published>2007-03-24T21:39:00.000-07:00</published><updated>2007-04-16T23:48:28.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #2: Dependencies (round 2)</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XPe&lt;/span&gt; tip #2:&lt;br /&gt;&lt;br /&gt;Let me continue about the "dependency tools"...&lt;br /&gt;&lt;br /&gt;We all know that currently there is nothing provided by Microsoft that is built in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XP&lt;/span&gt; Embedded Toolkit that will help you exploring dependencies of particular components. Well, there is now (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;FP&lt;/span&gt;2007) &lt;a href="http://www.windowsfordevices.com/articles/AT2103552026.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XPECMD&lt;/span&gt;&lt;/a&gt; but it is way too far from being a perfect way since you got to use heavy graphic development tools like Target Designer and you don't really want to switch back to command line just to take a sniff of the stack of particular component.&lt;br /&gt;&lt;br /&gt;Long time ago I came up with the nice (yes, I still consider it nice) package - &lt;a href="http://www.xpefiles.com/viewtopic.php?t=115"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XPeTools&lt;/span&gt;&lt;/a&gt; - that include some dependency exploring functionality to extend TD in a way. The first version I did was for done for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;XPe&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;RTM&lt;/span&gt;. But since then I've been working on it - fixing bugs and adding some new functionality - for last couple years.&lt;br /&gt;Take a look at the &lt;a href="http://www.xpefiles.com/viewtopic.php?t=115"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;DependencyExplorer&lt;/span&gt;&lt;/a&gt; component of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;XPeTools&lt;/span&gt; package on &lt;a href="http://www.xpefiles.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;xpefiles&lt;/span&gt;.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, don't forget to glance at the &lt;a href="http://www.xpefiles.com/viewtopic.php?t=115"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ConfigurationExplorer&lt;/span&gt;&lt;/a&gt; component from the same package. There is probably no analogs from MS and other MVP. It basically allows you to explore dependencies of components included in the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;current&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;config&lt;/span&gt;. You will notice it shows dependencies - list of components - that are only included in the current &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;config&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;XpeTools&lt;/span&gt; component scripts are encrypted so it makes it harder to reverse engineer the techniques I used there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-3377605337677858595?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/3377605337677858595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=3377605337677858595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3377605337677858595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/3377605337677858595'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-2-let-me-continue-about.html' title='XPe tip #2: Dependencies (round 2)'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7228136717649789737</id><published>2007-03-24T21:26:00.000-07:00</published><updated>2007-04-16T23:48:28.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe tips'/><title type='text'>XPe tip #1: Dependencies</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XPe&lt;/span&gt; tip #1:&lt;br /&gt;&lt;br /&gt;With &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XPe&lt;/span&gt; development you always fight with dependencies, don't you?&lt;br /&gt;So, what are the tools you can have that may help you on the dependency exploring adventure?&lt;br /&gt;&lt;br /&gt;Obviously, &lt;a href="http:///www.dependencywalker.com"&gt;Dependency Walker&lt;/a&gt;. You got to love the Profiling feature of that tool. It is basically all your need to get the knowledge of static and dynamic dependencies of an app or driver or system component.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sysinternal.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Sysinternal&lt;/span&gt;.com&lt;/a&gt; (now just &lt;a href="http://news.com.com/2100-1016_3-6095376.html"&gt;part of Microsoft&lt;/a&gt;) gives you the best tools ever created for Windows Operating systems. These must be a part of Windows Resource Kits, however the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;sysinternals&lt;/span&gt; tools evolve fast and changed often. Here is a few of them that are the most useful for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XPe&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;devs&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/processmonitor.mspx"&gt;Process Monitor&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/Regmon.mspx"&gt;Registry Monitor&lt;/a&gt; (aka &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Regmon&lt;/span&gt;)&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/Filemon.mspx"&gt;File Monitor&lt;/a&gt; (aka &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Filemon&lt;/span&gt;)&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/FileAndDisk/Diskmon.mspx"&gt;Disk Monitor&lt;/a&gt; (aka &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Diskmon&lt;/span&gt;)&lt;br /&gt;&lt;a href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx"&gt;Process Explorer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And many, many &lt;a href="http://www.microsoft.com/technet/sysinternals/default.mspx"&gt;others&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7228136717649789737?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7228136717649789737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7228136717649789737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7228136717649789737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7228136717649789737'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/xpe-tip-1-with-xpe-development-you.html' title='XPe tip #1: Dependencies'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-5988150776748010661</id><published>2007-03-24T21:18:00.000-07:00</published><updated>2007-04-16T23:51:15.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>My own XPe newsgroup posts database</title><content type='html'>I got to mention this here. I've been posting to &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/topics?lnk=gschg&amp;hl=en"&gt;Microsoft &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XPe&lt;/span&gt; newsgroup&lt;/a&gt; for quite a while as &lt;a href="http://groups.google.com/groups/profile?enc_user=XzfAMRkAAAAOTY5XNSIr7Jsi4L3QkkYD-tpoT5PwLSR6UIHNBXIAZQ&amp;amp;hl=en"&gt;KM&lt;/a&gt; and always been saving all my posts (Outlook Express archive). The fact is that for the moment (March 20, 2007) I've got &lt;strong&gt;6523&lt;/strong&gt; messages in that archived folder! Not bad, huh? :-)&lt;br /&gt;&lt;br /&gt;I am thinking (read: planning) on exposing that database of "answers in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XPe&lt;/span&gt; area" to the public some day. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;Perhaps&lt;/span&gt;, I will "somehow" link it to this blog. What's really needed is - Search engine! Otherwise it is going to be useless to see my bad &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;english&lt;/span&gt; reading those numberless posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-5988150776748010661?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/5988150776748010661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=5988150776748010661' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5988150776748010661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/5988150776748010661'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/i-got-to-mention-this-here.html' title='My own XPe newsgroup posts database'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-2920422963125821383</id><published>2007-03-24T21:16:00.000-07:00</published><updated>2007-04-16T23:51:15.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>Starting XPe tips&amp;tricks</title><content type='html'>I am starting new type of posting: XPe Tips. Will post here whatever tips and tricks we come up with while posting to &lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded/topics?lnk=gschg&amp;hl=en"&gt;microsoft public XPe newsgroup&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first and ever trick - please read and search the online product documentation. You will learn that it often has answers to most of your questions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-2920422963125821383?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/2920422963125821383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=2920422963125821383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2920422963125821383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/2920422963125821383'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/i-am-starting-new-type-of-posting-xpe.html' title='Starting XPe tips&amp;tricks'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-6617934889082009243</id><published>2007-03-24T21:05:00.000-07:00</published><updated>2007-04-16T23:51:15.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPe news and info'/><title type='text'>XPe useful links</title><content type='html'>I will be doing this blog primarily focusing on Microsoft product reviews, tip&amp;amp;tricks and development stuff.&lt;br /&gt;&lt;br /&gt;Let me start from my &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;favor ties&lt;/span&gt;: Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;XP&lt;/span&gt; Embedded and Windows Embedded CE.&lt;br /&gt;&lt;br /&gt;Some useful links for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;XP&lt;/span&gt; Embedded product:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa460432.aspx"&gt;Latest &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XP&lt;/span&gt; Embedded online documentation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://groups.google.com/group/microsoft.public.windowsxp.embedded"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XP&lt;/span&gt; Embedded public newsgroup &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;google&lt;/span&gt; archive&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.microsoft.com/embeddedwindows/default.aspx?siteid=47"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XP&lt;/span&gt; Embedded Microsoft Forum&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/embedded/aa731180.aspx"&gt;Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;XP&lt;/span&gt; Embedded Tips&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://microsoft.embeddedoem.com/"&gt;Microsoft &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;OEM&lt;/span&gt; Secure website&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mcse.ms/forumdisplay.php?f=230"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;XP&lt;/span&gt; Embedded public newsgroup &lt;/a&gt;&lt;a href="http://www.mcse.ms/forumdisplay.php?f=230"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;MSCE&lt;/span&gt; &lt;/a&gt;&lt;a href="http://www.mcse.ms/forumdisplay.php?f=230"&gt;archive&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/embedded"&gt;Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;XP&lt;/span&gt; Embedded Team Blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xpefiles.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;XPe&lt;/span&gt; 3rd party components&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-6617934889082009243?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/6617934889082009243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=6617934889082009243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6617934889082009243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/6617934889082009243'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/i-will-be-doing-this-blog-primarily.html' title='XPe useful links'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3719969187200074807.post-7299991358563435827</id><published>2007-03-24T20:41:00.000-07:00</published><updated>2007-03-24T20:45:12.447-07:00</updated><title type='text'>KM's blog - finally!</title><content type='html'>The blog has been created!&lt;br /&gt;I can't believe I did it. I hate writing, posting, publishing. But I feel I really need to create something for community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3719969187200074807-7299991358563435827?l=km-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://km-dev.blogspot.com/feeds/7299991358563435827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3719969187200074807&amp;postID=7299991358563435827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7299991358563435827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3719969187200074807/posts/default/7299991358563435827'/><link rel='alternate' type='text/html' href='http://km-dev.blogspot.com/2007/03/kms-blog-finally.html' title='KM&apos;s blog - finally!'/><author><name>KM</name><uri>http://www.blogger.com/profile/05210700385675089417</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='12' src='http://msdn2.microsoft.com/en-us/embedded/aa731159.konstantin(en-us,MSDN.10).gif'/></author><thr:total>0</thr:total></entry></feed>
