xchellx Posted June 4 Share Posted June 4 How do I register PaintDotNet.ShellExtension.x64.dll manually? regsvr32 does not like it (missing `DllRegisterServer` entry point),and regasm requires a C# DLL. Quote Link to comment Share on other sites More sharing options...
Disk4mat Posted June 4 Share Posted June 4 Im figuring there is some reason for not installing the app. Did you open the command prompt as an admin? Quote Link to comment Share on other sites More sharing options...
xchellx Posted June 5 Author Share Posted June 5 (edited) 17 hours ago, Disk4mat said: Im figuring there is some reason for not installing the app. Did you open the command prompt as an admin? Yes, from Windows Key + R -> cmd.exe -> Ctrl + Shift + Enter -> UAC Prompt: Spoiler Microsoft Windows [Version 10.0.19044.2965] (c) Microsoft Corporation. All rights reserved. C:\Windows\system32>cd C:\Users\xjonx\AppData\Roaming\paint.net C:\Users\xjonx\AppData\Roaming\paint.net>regsvr32 PaintDotNet.ShellExtension.x64.dll C:\Users\xjonx\AppData\Roaming\paint.net> I get: Spoiler --------------------------- RegSvr32 --------------------------- The module "PaintDotNet.ShellExtension.x64.dll" was loaded but the entry-point DllRegisterServer was not found. Make sure that "PaintDotNet.ShellExtension.x64.dll" is a valid DLL or OCX file and then try again. --------------------------- OK --------------------------- And from Start -> Visual Studio 2022 -> Developer Command Prompt for VS 2022 -> Right Click -> More -> Run as administrator -> UAC Prompt: Spoiler ********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.6.2 ** Copyright (c) 2022 Microsoft Corporation ********************************************************************** C:\Windows\System32>cd C:\Users\xjonx\AppData\Roaming\paint.net C:\Users\xjonx\AppData\Roaming\paint.net>regasm PaintDotNet.ShellExtension.x64.dll Microsoft .NET Framework Assembly Registration Utility version 4.8.9037.0 for Microsoft .NET Framework version 4.8.9037.0 Copyright (C) Microsoft Corporation. All rights reserved. RegAsm : error RA0000 : Failed to load 'C:\Users\xjonx\AppData\Roaming\paint.net\PaintDotNet.ShellExtension.x64.dll' because it is not a valid .NET assembly C:\Users\xjonx\AppData\Roaming\paint.net> And yes, I do have paint.net installed portably so I can move it to a new computer (copying over %APPDATA%) without having to reinstall it (makes setting up a new PC easier). Edited June 5 by xchellx Quote Link to comment Share on other sites More sharing options...
Rick Brewster Posted June 5 Share Posted June 5 18 hours ago, Disk4mat said: Im figuring there is some reason for not installing the app. Did you open the command prompt as an admin? This is for registering the thumbnail handler for a portable copy of the app Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
Rick Brewster Posted June 5 Share Posted June 5 When you install the app with the regular installer EXE, it will create a log file called C:\Windows\SystemTemp\pdnSetupActionsInstall.log. This contains, among other things, all of the registry entries it creates (or deletes, if updating or uninstalling). Start with the line containing the text RegistryHandler::Register and you'll see what registry entries are created, and how it is associated with each file extension. You won't need all of them but it should be reasonably obvious. Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
xchellx Posted June 5 Author Share Posted June 5 21 minutes ago, Rick Brewster said: When you install the app with the regular installer EXE, it will create a log file called C:\Windows\SystemTemp\pdnSetupActionsInstall.log. This contains, among other things, all of the registry entries it creates (or deletes, if updating or uninstalling). Start with the line containing the text RegistryHandler::Register and you'll see what registry entries are created, and how it is associated with each file extension. You won't need all of them but it should be reasonably obvious. Is there any way I can "dry run" the installer to figure this out? I do not want to modify my current environment just to figure this out. Or can you list the specific entries it modifies? Quote Link to comment Share on other sites More sharing options...
Solution Rick Brewster Posted June 5 Solution Share Posted June 5 No, there's no "dry run". Here's what it produces on my system though. Not all of it is needed for the thumbnail handler, such as the entries for the "protocol" and RegisteredCapabilities. None of it would be harmful, however. All strings are surrounded in double-quotes, so if you see a string with double-double quotes like ""this"" that just means that the string added to the registry is actually "this". There's no other escaping or formatting for the strings beyond that. 6/5/2023 7:52:45 AM - RegistryHandler::Register 6/5/2023 7:52:45 AM - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0) 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\(Default) = "paint.net Image" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\FriendlyTypeName = "paint.net Image" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\CurVer\(Default) = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\DefaultIcon\(Default) = "C:\Program Files\paint.net\paintdotnet.exe,0" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\shell\edit\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "%1"" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\shell\open\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "%1"" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\shell\print\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "print:%1"" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\(Default) = "URL:paint.net" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\URL Protocol = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\DefaultIcon\(Default) = "C:\Program Files\paint.net\paintdotnet.exe,0" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paintdotnet\shell\open\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" %1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\CLSID\{FBF113F1-D7C8-477C-A23A-E600E7937E11}\(Default) = "paint.net Thumbnail Provider" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\CLSID\{FBF113F1-D7C8-477C-A23A-E600E7937E11}\InprocServer32\(Default) = "C:\Program Files\paint.net\PaintDotNet.ShellExtension.x64.dll" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\CLSID\{FBF113F1-D7C8-477C-A23A-E600E7937E11}\InprocServer32\ThreadingModel = "Apartment" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.1\ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.ThumbnailProvider\CLSID\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.ThumbnailProvider\CurVer\(Default) = "paint.net.ThumbnailProvider.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\paint.net.ThumbnailProvider.1\CLSID\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}\(Default) = "{FBF113F1-D7C8-477C-A23A-E600E7937E11}" 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\RegisteredApplications\paint.net = "Software\paint.net\Capabilities" 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\ApplicationName = "paint.net" 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\ApplicationDescription = "paint.net allows you to create and edit images and photographs using a wide array of tools, adjustments, and effects." 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\paintdotnet.exe\(Default) = "C:\Program Files\paint.net\paintdotnet.exe" 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\paintdotnet.exe\SupportedProtocols = "paintdotnet" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\shell\edit\command\(Default) = ""C:\Program Files\paint.net\paintdotnet.exe" "%1"" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\FriendlyAppName = "paint.net" 6/5/2023 7:52:45 AM - registering .pdn 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.pdn = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\(Default) = "paint.net.1" 6/5/2023 7:52:45 AM - registry value did not exist: HKEY_CLASSES_ROOT\.pdn\PerceivedType 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\PerceivedType = "image" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.pdn = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.pdn\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .avif 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.avif = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.avif = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.avif\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .bmp 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.bmp = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.bmp = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.bmp\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .dib 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.dib = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.dib = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.dib\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .dds 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.dds = "paint.net.1" 6/5/2023 7:52:45 AM - registry value retrieved: HKEY_CLASSES_ROOT\.dds\PerceivedType = "image" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.dds = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.dds\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .gif 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.gif = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.gif = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.gif\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .heic 6/5/2023 7:52:45 AM - registry value retrieved: HKEY_CLASSES_ROOT\CLSID\{E9A4A80A-44FE-4DE4-8971-7150B10A5199}\InprocServer32\(Default) = "C:\WINDOWS\system32\msheif.dll" 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.heic = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.heic = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.heic\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .jfif 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jfif = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jfif = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jfif\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .jpe 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jpe = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jpe = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jpe\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .jpeg 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jpeg = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jpeg = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jpeg\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .jpg 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jpg = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jpg = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jpg\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .jxr 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.jxr = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.jxr = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.jxr\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .png 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.png = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.png = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.png\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .rle 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.rle = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.rle = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.rle\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .tga 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.tga = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.tga = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.tga\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .tif 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.tif = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.tif = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.tif\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .tiff 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.tiff = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.tiff = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.tiff\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .wdp 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.wdp = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.wdp = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.wdp\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .wmp 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.wmp = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.wmp = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.wmp\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - registering .webp 6/5/2023 7:52:45 AM - setting registry value: HKEY_LOCAL_MACHINE\Software\paint.net\Capabilities\FileAssociations\.webp = "paint.net.1" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\Applications\paintdotnet.exe\SupportedTypes\.webp = "" 6/5/2023 7:52:45 AM - setting registry value: HKEY_CLASSES_ROOT\.webp\OpenWithProgids\paint.net.1 = "" 6/5/2023 7:52:45 AM - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0) 1 Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.