{"id":1142,"date":"2024-06-05T17:39:31","date_gmt":"2024-06-05T16:39:31","guid":{"rendered":"https:\/\/kolbi.cz\/blog\/?p=1142"},"modified":"2025-11-17T10:53:16","modified_gmt":"2025-11-17T09:53:16","slug":"progidtool-display-delete-export-and-register-file-type-progids","status":"publish","type":"post","link":"https:\/\/kolbi.cz\/blog\/2024\/06\/05\/progidtool-display-delete-export-and-register-file-type-progids\/","title":{"rendered":"ProgIDTool &#8211; display, copy, delete, export, rename, duplicate and register File Type ProgID&#8217;s"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Since I have released SetUserFTA, many users struggled to find the correct ProgID to associate with an extension or a protocol. Windows offers ftype.exe, which lists all the filetypes available under HKEY_LOCAL_MACHINE &#8211; but this does not include the filetypes from HKEY_CURRENT_USER.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But HKEY_CURRENT_USER has precedence over HKEY_LOCAL_MACHINE and therefore a utility that can list all the USER filetypes would be very helpful, right? SetUserFTA can list all <em>associated<\/em> filetypes, but not the ones that are generally available.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ProgIDTool had exactly this goal initially, but then during the development, I had some additional ideas and now it contains following features:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Searches for file types and their associated command line in either&nbsp;HKEY_LOCAL_MACHINE or&nbsp;HKEY_CURRENT_USER.<\/li>\n\n\n\n<li><strong>Register<\/strong>: Registers a new ProgID with a specified executable path and arguments.<\/li>\n\n\n\n<li><strong>Copy<\/strong>: Copies a ProgID from&nbsp;HKLM&nbsp;to&nbsp;HKCU or vice versa.<\/li>\n\n\n\n<li><strong>Delete<\/strong>: Deletes a specified ProgID from either&nbsp;HKLM&nbsp;or&nbsp;HKCU.<\/li>\n\n\n\n<li><strong>Rename<\/strong>: Renames a ProgID in HKLM or HKCU.<\/li>\n\n\n\n<li><strong>Duplicate<\/strong>: Creates a copy of an existing ProgID in HKLM or HKCU.<\/li>\n\n\n\n<li><strong>Export<\/strong>: Exports a specified ProgID and its subkeys to a&nbsp;.reg&nbsp;file.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The search function compares the ProgID and Path of the filetype and displays all matching results. This is very handy, because Windows can have a LOT of filetypes in the registry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the following example you can see the difference compared to ftype.exe:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"403\" src=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-4-1024x403.png\" alt=\"\" class=\"wp-image-1162\" srcset=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-4-1024x403.png 1024w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-4-300x118.png 300w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-4-768x302.png 768w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-4.png 1438w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">ftype.exe cannot find the ProgID that I have registered in my current users registry, but ProgIDTool can.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For filetypes available in HKEY_LOCAL_MACHINE the results will be the same:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"748\" src=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-5-1024x748.png\" alt=\"\" class=\"wp-image-1163\" srcset=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-5-1024x748.png 1024w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-5-300x219.png 300w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-5-768x561.png 768w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2024\/06\/image-5.png 1514w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to list ALL available filetypes from the HKCU key, you can use &#8220;<strong>ProgIDTool % HKCU<\/strong>&#8221; <br>(Note: Using&nbsp;<code>*<\/code>&nbsp;does not work because&nbsp;cmd.exe&nbsp;interprets it as a wildcard instead of passing it to the utility.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Here is the full command list:<\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Search<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;search-term&gt; [HKLM|HKCU]<br><br>Example: <br>ProgIDTool &lt;search-term&gt;<br>ProgIDTool &lt;search-term&gt; HKCU<br>ProgIDTool % HKCU  <\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Searches for file types and their associated commands containing the specified search term. You can filter the results by supplying HKLM or HKCU. If you supply % as a search term, all results will be shown.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Delete<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>delete [HKLM|HKCU] &lt;progid&gt;<\/code><br><br><code>Example: <br>ProgIDTool delete HKCU MyProgID<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Deletes the specified ProgID from either HKLM or HKCU. When deleting from HKLM, administrative privileges are required.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Copy<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>copy [HKLM|HKCU] &lt;progid&gt; [-force]<br><br>Example: <br>ProgIdTool copy HKCU MyProgID<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Copies the specified ProgID from HKCU to HKLM or vice versa. When copying to HKLM, administrative privileges are required. overwriting existing entries requires &#8220;-force&#8221;.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Export<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>export [HKLM|HKCU] &lt;progid&gt;<br><br>Example: <br>ProgIDTool export HKLM MyProgID<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Exports the specified ProgID and its subkeys from either HKLM or HKCU to a .reg file in the same directory of ProgIDTool.exe.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Rename<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>rename [HKLM|HKCU] &lt;progid&gt; &lt;newprogid&gt;<br><br>Example: <br>ProgIDTool rename HKLM MSEdgeHTM MSEdgeHTM2<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Allows renaming a ProgID in the Windows Registry, requiring the root key (HKLM or HKCU), the source ProgID, and the destination ProgID. The source ProgID will not exist anymore after using this command. If the destination key already exists, it can be overwritten by supplying -force.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Duplicate<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>duplicate [HKLM|HKCU] &lt;progid&gt; &lt;newprogid&gt;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Example:<br>ProgIDTool duplicate HKLM MSEdgeHTM MSEdgeHTM2<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Allows duplicating a ProgID in the Windows Registry, requiring the root key (HKLM or HKCU), the source ProgID, and the destination ProgID. The source ProgID will remain and the destination contain the same content. If the destination key already exists, it can be overwritten by supplying -force.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Register<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><code>register [HKLM|HKCU] &lt;progid&gt; &lt;path&gt; [-force]<br><br>Example: <br>ProgIDTool register HKCU MyProgID C:\\Path\\To\\Executable.exe<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Description: Registers a new ProgID with the specified executable path. you can add arguments to the path by including the full command line in quotes. if the ProgID already exists, it can be overwritten by adding &#8220;-force&#8221;. if the path requires additional quotes, you can escape them with &#8220;\\&#8221; for example:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">input: &#8220;\\&#8221;C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\\&#8221; \\&#8221;%1\\&#8221;&#8221;<br>result: &#8220;C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe&#8221; &#8220;%1&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And thats It! Hope the utility is helpful! Works best with <a href=\"https:\/\/kolbi.cz\/blog\/2024\/06\/05\/progidtool-display-delete-export-and-register-progids\/\">SetUserFTA<\/a> of course. You can download it here:<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-text-align-center wp-element-button\" href=\"https:\/\/kolbi.cz\/ProgIDTool.zip\">Download<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><br><strong>SHA256<\/strong>: ProgIDTool.zip:187d009c0d7cb132206726ba09832d98980ee2357794693cf77492f4a9dfb0b6<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you have ideas or issues, you can send me a <a href=\"https:\/\/setuserfta.com\/feature-suggestion\/\">feature suggestion<\/a> or a <a href=\"https:\/\/setuserfta.com\/bug-report\/\">bug report<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Version History:<\/strong><br>10.06.2024 &#8211; Version 1.0: Initial Version<br>29.07.2024 &#8211; Version 1.1: Adds rename and duplicate option<br>24.11.2024 &#8211; Version 1.2: Fixes a logic bug in the &#8220;copy&#8221; function<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Donations can be made over\u00a0<a href=\"https:\/\/paypal.me\/kolbicz\">https:\/\/paypal.me\/kolbicz<\/a>. THANKS!<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Since I have released SetUserFTA, many users struggled to find the correct ProgID to associate with an extension or a protocol. Windows offers ftype.exe, which <a class=\"mh-excerpt-more\" href=\"https:\/\/kolbi.cz\/blog\/2024\/06\/05\/progidtool-display-delete-export-and-register-file-type-progids\/\" title=\"ProgIDTool &#8211; display, copy, delete, export, rename, duplicate and register File Type ProgID&#8217;s\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":1155,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[15,16,25],"class_list":["post-1142","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-commandline","tag-euc","tag-microsoft"],"_links":{"self":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts\/1142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/comments?post=1142"}],"version-history":[{"count":27,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts\/1142\/revisions"}],"predecessor-version":[{"id":1332,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts\/1142\/revisions\/1332"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/media\/1155"}],"wp:attachment":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/media?parent=1142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/categories?post=1142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/tags?post=1142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}