{"id":111582,"date":"2025-09-10T07:00:00","date_gmt":"2025-09-10T14:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/oldnewthing\/?p=111582"},"modified":"2025-09-10T09:27:58","modified_gmt":"2025-09-10T16:27:58","slug":"20250910-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20250910-00\/?p=111582","title":{"rendered":"The documentation says that CompanyName version information is required, but my program seems to work without it, so how required is it?"},"content":{"rendered":"<p>A customer observed that <a title=\"VERSIONINFO resource\" href=\"https:\/\/learn.microsoft.com\/windows\/win32\/menurc\/versioninfo-resource\"> the documentation for version resources<\/a> describes strings like <tt>CompanyName<\/tt> and <tt>ProductName<\/tt> as &#8220;required&#8221;. But they found that if they omitted those strings, nothing bad seemed to happen. Furthermore, if they created an installer for their program, the installer allowed them to omit the company name. So how required can it be? If it&#8217;s actually required, why does the installer let you omit it?<\/p>\n<p>The term &#8220;required&#8221; here is not a technical requirement in the sense of &#8220;a program that does not provide this information is invalid&#8221;. Rather, it is a &#8220;very strong recommended in order to be a good citizen.&#8221;<\/p>\n<p>Programs that read version information expect to find a company name and product name, and if you don&#8217;t have one, they may not be happy about it.<\/p>\n<p>For example, a low-stakes consequence of not providing the information is that in places where system would normally show the name of an app (for example, labels for grouped taskbar items), your app shows up with no name. Or a usage report shows usage attributed to an untitled program.<\/p>\n<p>A consequence with slightly higher stakes is user confusion, like a dialog box that says &#8220;The program \u00a0 has stopped working. If this problem persists, contact \u00a0 for support.&#8221; Since you didn&#8217;t provide a program name or company name, the insertions into the error string are blank, and the result is a confusing error message.<\/p>\n<p>A much higher stakes consequence is application compatibility. The application compatibility system uses various signals to identify apps that require compatibility accommodations. The file&#8217;s version resource is one of those signals, since that contains the application version number, as well as information to help distinguish which of several apps this <tt>autorun.exe<\/tt> executable belongs to. If you don&#8217;t provide these additional identifying details, the application compatibility system has to rely on other signals to identify your program, and those other signals are naturally less reliable than just seeing the value Contoso Corporation right there in the <tt>CompanyName<\/tt> string.<\/p>\n<p>If there is a false negative, then the compatibility accommodation will not be activated for your program, and your program may not run reliably or as intended. Even worse, a false positive means that the compatibility accommodation will be activated for other programs by mistake, and that might impair those other programs and prevent them from running as intended. So now you have <i>two<\/i> programs that don&#8217;t work: Yours and the program that the compatibility accommodation was mistakenly applied to.<\/p>\n<p>So please set your <tt>CompanyName<\/tt>, <tt>ProductName<\/tt> and other &#8220;required&#8221; field. It makes everybody&#8217;s lives much easier (and in the case of compatibility accommodations, that includes your program).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;s more of a &#8220;Very strongly recommended&#8221; than a &#8220;Required&#8221;.<\/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":[25],"class_list":["post-111582","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-code"],"acf":[],"blog_post_summary":"<p>It&#8217;s more of a &#8220;Very strongly recommended&#8221; than a &#8220;Required&#8221;.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/111582","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=111582"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/111582\/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=111582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=111582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=111582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}