{"id":111779,"date":"2025-11-10T07:00:00","date_gmt":"2025-11-10T15:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/oldnewthing\/?p=111779"},"modified":"2025-11-10T06:21:29","modified_gmt":"2025-11-10T14:21:29","slug":"20251110-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20251110-00\/?p=111779","title":{"rendered":"How did Windows 3.1 distinguish two different programs that happened to share the same executable name?"},"content":{"rendered":"<p>Some time ago, I <a title=\"What were the intended uses of those icons in moricons.dll?\" href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20250505-00\/?p=111143\"> described the purpose of the icons in the <tt>moricons.dll<\/tt> and <tt>progman.exe<\/tt> icon libraries<\/a>, along with a list of which programs Windows automatically associated the icons with. (<a title=\"What were the MS-DOS programs that the moricons.dll icons were intended for?\" href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20250507-00\/?p=111157\"><tt>moricons.dll<\/tt>, <\/a><a title=\"What were the MS-DOS programs that Windows used the progman.exe stock icons for?\" href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20250506-00\/?p=111149\"> <tt>progman.exe<\/tt><\/a><a title=\"What were the MS-DOS programs that the moricons.dll icons were intended for?\" href=\"https:\/\/devblogs.microsoft.com\/oldnewthing\/20250507-00\/?p=111157\">). <\/a><\/p>\n<p>One common problem is that multiple programs share the same executable name, so if you find an executable named <tt>MAIL.EXE<\/tt>, you aren&#8217;t sure whether that&#8217;s PATHWORKS Mail or cc:Mail or XcelleNet X\/Mail.<\/p>\n<p>What did Windows 3.1 do when it saw these ambiguous files?<\/p>\n<p>It simply asked the user for help.<\/p>\n<table style=\"border: solid #000080 4px; font-weight: bold; font-family: System, MS Sans Serif, sans-serif; background-color: white; color: black;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr style=\"background-color: #000080; color: white;\">\n<td style=\"padding: 2px; border: 1px solid white; border-bottom: black;\" align=\"center\">Setup Applications<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px;\">\n<div style=\"padding-bottom: 1ex;\">Setup needs to know the application name for:<\/div>\n<div style=\"padding-bottom: 1ex;\">C:\\MAIL\\MAIL.EXE<\/div>\n<div><u>S<\/u>elect the application name from the following list, and choose<br \/>\nOK, or press ENTER to continue.<\/div>\n<div style=\"border: solid 1px black; margin: 5px 0;\">\n<div style=\"background-color: #000080; color: white; padding-left: 2px;\">Microsoft Mail<\/div>\n<div style=\"padding-left: 2px;\">PATHWORKS Mail for MS-DOS<\/div>\n<div style=\"padding-left: 2px;\">cc:Mail for MS-DOS<\/div>\n<div style=\"padding-left: 2px;\">XcelleNet X\/Mail for MS-DOS<\/div>\n<div style=\"padding-left: 2px;\">None of the above<\/div>\n<\/div>\n<div style=\"display: flex; justify-content: space-evenly; text-align: center; padding-top: 1em;\">\n<div style=\"width: 12ex; border: 2px solid black; background-color: #c0c0c0;\">\n<div style=\"border: 2px solid; border-color: white #808080 #808080 white;\">OK<\/div>\n<\/div>\n<div style=\"width: 12ex; border: 1px solid black; background-color: #c0c0c0;\">\n<div style=\"border: 2px solid; border-color: white #808080 #808080 white;\">\n<div style=\"border: 1px solid #c0c0c0;\">Cancel<\/div>\n<\/div>\n<\/div>\n<div style=\"width: 12ex; border: 1px solid black; background-color: #c0c0c0;\">\n<div style=\"border: 2px solid; border-color: white #808080 #808080 white;\">\n<div style=\"border: 1px solid #c0c0c0;\"><u>H<\/u>elp<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The information for this came from the <tt>APPS.INF<\/tt> file, the format of which is documented in the Windows Resource Kit. (It starts on <a href=\"https:\/\/archive.org\/details\/bitsavers_microsoftr5Windows3.1ResourceKit199202_48972813\/page\/121\/mode\/2up\"> page 121<\/a>.)<\/p>\n<p>Next time, we&#8217;ll see how Windows 95 improved on this in its application compatibility database.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The trouble with disambiguation.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[2],"class_list":["post-111779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-history"],"acf":[],"blog_post_summary":"<p>The trouble with disambiguation.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/111779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=111779"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/111779\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=111779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=111779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=111779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}