Page 2 of 2 FirstFirst 12
Results 11 to 20 of 20

Thread: Testies external shared Libraries, regedit, registry

  1. #11
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10

    A Ponder Page for exteral library names

    Some Notes in support of this main forum post:
    https://eileenslounge.com/viewtopic....326247#p326247


    For some later pondering
    Last edited by DocAElstein; 03-31-2025 at 11:30 PM.

  2. #12
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    Later

  3. #13
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    later

  4. #14
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    later still

  5. #15
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    In support of this main forum post
    https://eileenslounge.com/viewtopic....326389#p326389 , https://eileenslounge.com/viewtopic....326431#p326431
    It’s in way of a correction and update to this post
    https://eileenslounge.com/viewtopic....326377#p326377


    Here is the 12 in total that I missed.
    Code:
    {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}	1.a	Common Language Runtime Library
    {A4D51C5D-F8BF-46CC-92CC-2B34D2D89714}	e.0	LicLuaLib
    {54AF9343-1923-11D3-9CA4-00C04F72C514}	2.32	Microsoft Data Access Components Installed Version
    {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}	c.0	Microsoft Office 14.0 Access Database Engine Object Library
    {A5EDEDF4-2BBC-45F3-822B-E60C278A1A79}	b.0	Microsoft Office Document Imaging 11.0 Type Library
    {91493440-5A91-11CF-8700-00AA0060263B}	2.a	Microsoft PowerPoint 14.0 Object Library
    {AAB9C2AA-6036-4AE1-A41C-A40AB7F39520}	a.0	Microsoft Visual Studio Tools for Office Execution Engine Type Library
    {FB1B729D-440F-4E42-87F8-5ABF7068E5D4}	14.00	OneNote COM Elevation Type Library
    {BEE4BFEC-6683-3E67-9167-3C0CBC68F40A}	1.a	System.dll
    {D37E2A3E-8545-3A39-9F4F-31827C9124AB}	1.a	System.Drawing.dll
    {215D64D2-031C-33C7-96E3-61794CD1EE61}	1.a	System.Windows.Forms.dll
    {4FB2D46F-EFC8-4643-BCD0-6E5BFA6A174C}	1.a	System_EnterpriseServices
    As a punishment I will look at all those, to both correct if necessary my last conclusions and see if there is anything new to learn

    {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D} 1.a Common Language Runtime Library
    I got previously 1 Common Language Runtime Library already, so correcting the situation means I have 2 in the list, but as only 1 is showing in the little reference checking window. So I need a correction to my last results, to highlight one of them in yellow to indicate an extra version in the list that does not appear in the reference checking window. (Note in passing for now that the path to the "thing" ends up at a mscorlib.tlb

    But we are not finished with this one. In fact there are 3 versions in the registry.
    https://i.postimg.cc/MGJL38PZ/Common...ibrary-1-0.jpg
    https://i.postimg.cc/dVyX909S/Common...ibrary-1-a.jpg
    https://i.postimg.cc/HsKR5Mby/Common...corlib-dll.jpg

    Weird? – Where's the third in the list then?. I can half explain that. Take a look at the "human readable description" / "TypeLib human readable name" / name in that little reference checking window .
    https://i.postimg.cc/HsKR5Mby/Common...corlib-dll.jpg
    It is different for the third Common Language Runtime Library version (version 2.0 ) , - it looks like a file name, which happens sometimes, by design or accident I am not sure. In this case the file name is mscorlib.dll
    So scroll down and Bingo, there it is. https://i.postimg.cc/6Q9Fqf5R/Scroll...here-it-is.jpg
    https://i.postimg.cc/HsKR5Mby/Common...corlib-dll.jpg

    So this third one does not effect my results as it was always in the list, but a bit hidden as it did not have the "human readable description" / "TypeLib human readable name" / name in that little reference checking window name that I expected.
    Note a last little weirdness here…. The the "human readable description" / "TypeLib human readable name" / name in that little reference checking window name is mscorlib.dll, but the path*** ends up at mscorlib.tlb like the others.
    (*** A little tip I learnt from this is when I look in the little reference window to see if a reference is there, then if I tick it temporarily , then the little box at the bottom gives me the path to the .dll or similar file. (Sometimes unfortunately the path is a bit long for the box, and you can't scroll or expand anything so you miss the last bit. It would not surprise me if we could gat a list of those as well with a Winny or maybe even API coding?)

    _.__________________

    The following do not effect any of my conclusions and there is nothing new to learn from them. I just missed them, because of there less typical version number, that's all
    Code:
    {A4D51C5D-F8BF-46CC-92CC-2B34D2D89714}	e.0	LicLuaLib
    {54AF9343-1923-11D3-9CA4-00C04F72C514}	2.32	Microsoft Data Access Components Installed Version
    {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28}	c.0	Microsoft Office 14.0 Access Database Engine Object Library
    {A5EDEDF4-2BBC-45F3-822B-E60C278A1A79}	b.0	Microsoft Office Document Imaging 11.0 Type Library
    {91493440-5A91-11CF-8700-00AA0060263B}	2.a	Microsoft PowerPoint 14.0 Object Library
    {AAB9C2AA-6036-4AE1-A41C-A40AB7F39520}	a.0	Microsoft Visual Studio Tools for Office Execution Engine Type Library
    {FB1B729D-440F-4E42-87F8-5ABF7068E5D4}	14.00	OneNote COM Elevation Type Library
    _.______________________

    This next one
    {BEE4BFEC-6683-3E67-9167-3C0CBC68F40A} 1.a System.dll
    ,has a story that is a bit of a variation on the first ( {BED7F4EA-1A96-11D2-8F08-00A0C9A6186D} 1.a Common Language Runtime Library ) story, but with a bit of a twisting quirk:
    There are three versions. They all end up in a file, system.tlb but for some strange reason the "human readable description" / "TypeLib human readable name" / name in that little reference checking window names for the three versions are not all the same. The first two are, and are of the file form, but the third looks like the .dll fell off
    System.dll https://i.postimg.cc/3x59YFgn/System-dll-1-0.jpg
    System.dll https://i.postimg.cc/Pf72FjNG/System-dll-1-a.jpg
    System https://i.postimg.cc/L5GDqzG4/System-2-0.jpg
    How weird and mixed up is that?
    (Only 1 System.dll is in the "human readable description" / "TypeLib human readable name" / name in that little reference checking window , so appropriately I modify my previous results to give another yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window )
    _________________________

    {D37E2A3E-8545-3A39-9F4F-31827C9124AB} 1.a System.Drawing.dll
    I had missed one of these, meaning that there are 3 versions, and as only 2 are in the reference checking window , I need to add a yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window
    https://i.postimg.cc/WzdSb9Wf/System...ng-dll-1-0.jpg
    https://i.postimg.cc/d1H4FMBy/System...ng-dll-1-a.jpg
    https://i.postimg.cc/MTxhH8V3/System...ng-dll-2-0.jpg


    _._____________________________________

    {215D64D2-031C-33C7-96E3-61794CD1EE61} 1.a System.Windows.Forms.dll
    The same story here as the very fist story. I missed one of 3 in the registry, and with the same twist in the tale of the first two ( version 1.0 and version 1.a ), having the same "TypeLib human readable name" , and that name is different to the last version "TypeLib human readable name" (version 2.0)
    https://i.postimg.cc/CK4cvnnJ/System...ms-dll-1-0.jpg
    https://i.postimg.cc/VNw7BWvd/System...ms-dll-1-a.jpg
    https://i.postimg.cc/jdG3Cbr6/System...ms-dll-2-0.jpg

    As before, only one of the first name appears in the little reference checking window, so I need to add a yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window
    The third name, System_Windows_Forms , appears and always did in Winnie lists and so effects nothing

    _.________________________________________________ _________________-

    {4FB2D46F-EFC8-4643-BCD0-6E5BFA6A174C} 1.a System_EnterpriseServices
    I missed one in my Winnie list, making 3 in total, and 3 are also seen in the registry, but only two in the little reference checking window so time to add another yellow background to indicate an extra version in the Winnie list that does not appear in the reference checking window

    _._____________________________________-



    As far as my previous conclusions are concerned not much error was caused in my general conclusions:
    I had to add a few yellow backgrounds to indicate when a version did not appear in the "human readable description" / "TypeLib human readable name" / name in that little reference checking window ;
    But none of the files I missed are those with the light blue background, which means there is no change in the conclusion that some things in the Winnie got lists are not at all in any version in the "human readable description" / "TypeLib human readable name" / name in that little reference checking window . Investigating that, and probably a few other things, will need a lot more time a lot later.

    Here is the final corrected stats
    472 from Winnie

    472
    - 33 lightblue (not anywhere in the reference checking window)
    - 17 yellow ( extra versions not anywhere in the reference checking window )

    = 424 in reference checking window



    Alan
    Attached Files Attached Files
    Last edited by DocAElstein; 04-06-2025 at 01:33 PM.

  6. #16
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    This is posts https://www.excelfox.com/forum/showt...age3#post25028
    https://www.excelfox.com/forum/showt...age2#post25032



    Some extra notes to go with these main forum post
    https://eileenslounge.com/viewtopic....326446#p326446

    I am catching up here and responding to some of the interesting info in this post
    I might also be responding to the second half of this one , bit I still have not quite figured out what was being said there. ( I wasn't confused by the AidFromGuid metjhopd , - I know that's the SiP syndrone (Smartphone In Pub) :smile: )
    Or maybe I am just pondering, a not uncommon occurrence

    So… Update so far, and introduction to current stand
    Going back a year and / or 4, we have tangled with "Clsid registry lists" before, and the digressions here forced me to revise them again, from and around here , or there abouts.
    I had back then a bad Winniemidgetgismo coding, and Mike did it better, (a not un common state of affairs in recent years….)
    It ended up like this
    https://i.postimg.cc/Y9Q7rPYQ/Old-Clsid-Lists.jpg


    The coding that got the lists…
    What I tried was I Initially got just the Clsid list and then, a while later, I tried to stick them pseudo in a
    Obj = CreateObject("New:" & MeClisid & "")
    , see what happened. It did not damage or break too much on my computers, at last not all of them always, but I was not too sure what was going on. If an attempt did not error or break something, then I did a
    TypeName(Obj)
    , on the resulting object. I am not sure why I did that, I expect I just thought at the time that somebody perhaps should. I had no idea what the results were telling me.
    You ( You= Mike ) in your coding equivalent got both the Clsid list and a ProgID. (And as I understand a bit better the winygismo codings I know now where that came from). Your code never errored or broke things like mine did, and there were sometimes similarities with your ProgID results and my TypeName(Obj), for the same Clisid
    https://www.excelfox.com/forum/showt...ll=1#post25010
    https://www.excelfox.com/forum/showt...ll=1#post25012
    CLSDsUndClassNames.xls - https://app.box.com/s/nkjwti5yym9j0v634hrxerz4x7n1o90w

    But I was still none the wiser on what it all meant..


    But I am getting there now
    So lets look at your current example : https://i.postimg.cc/NMvg1Dw0/Little...ng-Runtime.jpg https://i.postimg.cc/7hD0QSSH/Micros...e-adding-a.jpg This is whre we might fist come across it, when "checking a reference for Early Binding"
    We have learnt now that the relevant word to use there is the "human readable description" or "TypeLib human readable name", aka the name to look for in the little window for checking a reference

    , - and here it is in "the Clsids" file of mine from s few years back
    https://i.postimg.cc/05f8w7X8/Clsid-...ng-Runtime.jpg ,
    {0D43FE01-F093-11CF-8940-00A0C9054228} Tried FileSystemObject {0D43FE01-F093-11CF-8940-00A0C9054228} Scripting.FileSystemObject


    Here we can see it again in the little reference checking VB Editor window, https://i.postimg.cc/NMvg1Dw0/Little...ng-Runtime.jpg , but that is perhaps not coming from directly from there, well maybe it is sort of,….


    This is something new we picked up, Here it is (a different Guid number note), in the Registry Hive HKEY_CLASSES_ROOT , at the path TypeLib\{420B2830-E718-11CF-893D-00A0C9054228}\1.0
    https://i.postimg.cc/J01MFh0V/Reg-Ty...ng-Runtime.jpg

    And we got some more recent Winnie codings to get that TypeLib info
    {420B2830-E718-11CF-893D-00A0C9054228} 1.0 Microsoft Scripting Runtime
    So that is a refresh on the Clsid stuff, and a bit extra about the TypeLib Guid
    ( This is also the Guid used in the .AddFroGuidWe do not use the Clsid Guid there! )

    Now we will move on in the next post
    Last edited by DocAElstein; 04-09-2025 at 07:10 PM.

  7. #17
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    This is posts https://www.excelfox.com/forum/showt...ll=1#post25033
    https://www.excelfox.com/forum/showt...ll=1#post25033
    https://www.excelfox.com/forum/showt...age2#post25033
    https://www.excelfox.com/forum/showt...ll=1#post25034
    https://www.excelfox.com/forum/showt...ll=1#post25034
    https://www.excelfox.com/forum/showt...age3#post25034




    I am slightly upset at this point that the two different Guids in the last post
    _ { the Clsid Guid }
    and
    _ { the other Guid ( related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external library reference from the VB Editor , and the one to use in the .AddFromGuid ) }
    are not more similar. Here they are again,
    {0D43FE01-F093-11CF-8940-00A0C9054228} ' Clsid Guid FileSystemObject Scripting.FileSystemObject
    {420B2830-E718-11CF-893D-00A0C9054228} ' TypeLib Guid 1.0 Microsoft Scripting Runtime

    ( But they are a bit similar. Maybe part of them would always be the same?? )

    However, all is not lost., or maybe not always. Take a look at the other info that is sometimes there for a Clsid:
    https://i.postimg.cc/HW543w1J/Micros...c-Server32.jpg
    https://i.postimg.cc/90GdMhYP/Micros...me-Prog-ID.jpg
    https://i.postimg.cc/XqMK4Jd7/Micros...e-Type-Lib.jpg
    https://i.postimg.cc/Bv6BCRJs/Micros...me-Version.jpg


    Microsoft Scripting Runtime InprocServer32.JPGMicrosoft Scripting Runtime ProgID.JPGMicrosoft Scripting Runtime Version.JPGMicrosoft Scripting Runtime TypeLib.JPG

    In particular this: https://i.postimg.cc/nc3B0jrx/Micros...e-Type-Lib.jpg

    So we can see that the info to the TypeLib ( related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external library reference from the VB Editor, which is also the one to use in the .AddFromGuid ) is also there.


    What next, getting a bit confused with different Guids and different registry issues.

    I think at this stage, I want to extend the investigation into the Guids on the XP machine that I recently I did the extensive Guid lists on ( https://eileenslounge.com/viewtopic....326377#p326377
    https://eileenslounge.com/viewtopic....326431#p326431
    ) , just to check out the full Clsid/ Guid situation before and perhaps after the TLBINF.dll registration
    Last edited by DocAElstein; 04-09-2025 at 09:08 PM.

  8. #18
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    Clsid and other Guid lists review
    We have
    _ (i) some newer "TypeLib"codings, ( including a API one!! from Mike ) which look at the Guid ( "TypeLib Guid" )related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external library reference from the VB Editor which is also the one to use in the .AddFromGuid . The full list of these Guids is at the registry path Computer HKEY_CLASSES_ROOT TypeLib
    and
    _(ii) an older "Clsid Guid" getting set of codings from me and Mike, reviewed again recently from about here: https://www.excelfox.com/forum/showt...ll=1#post25008

    In this post I would like to update again the latter earlier Clsid Guid codings, or rather make a new single one, to include, or at least investigate, the possibility of getting the TypeLib Guid as well from it, and some other information, following the discussions of the last posts, which showed that sometimes we may have that TypeLib Guid and/ or other information "at the Clisid" list, as it were.

    This post discusses the coding. The over next posts discusses the results

    Rem 1 The first thing it does is get the full Clsid list at the registry Computer\HKEY_CLASSES_ROOT\CLSID using the Winnie way.

    There are 4972 Clsids for the XP Notebook that I have recently been using in these recent discussions ( My name for that notebook is Keks, or KeksXP or similar ). (The returned array has 4973 elements, the first one, indicia 0, has a text in it CLSID )
    This code next line puts the full CLSID list from here , https://i.postimg.cc/Tw8Th8bH/Comput...ROOT-CLSID.jpg , https://i.postimg.cc/L4DhQXL9/HKEY-C...ROOT-CLSID.jpg , into the Array Clsids(),
    RegInfoPro.EnumKey RegHive, "CLSID", Clsids()

    In each of the , ====== main loopings, each Clsid is listed in one column, and then that same Clsid is further used to get other column outputs, (if they are available, "at the Clsid") :


    Rem 3 InprocServer32 ' This seems to be the .dll or similar file
    Rem 4 ProgID - see Mike here https://eileenslounge.com/viewtopic....326247#p326247 - ProgID is [Library].[Object]
    Rem 5 Version number held "at the Clsid"
    Rem 6 TypeLib Guid if there is one held "at the Clsid"
    Rem 7 Try to make an object type with Obj = CreateObject("New:" & { The Clsid } & "") , then, if successful try to do a TypeName(LateBndObj) on that object


    ( In the previous codings from a year or 4 ago, we did just the
    ProgID from Mike
    , and the
    Try to make an object type with Obj = CreateObject("New:" & { The Clsid } & "") , then, if successful try to do a TypeName(LateBndObj) on that object from me
    The results were similar. )

    So far the coding discussed is a slightly more detailed info getting version of the previous Clsid codings.

    But there is one further important new part of this coding:
    '6b - we investigate the specific TypeLib Guid , (if there was one at the Clsid) , at the place where the full TypeLib Guid list is. We expect that the TypeLib Guid will mostly be there but we investigate if there are other more than one version, as well as comparing the actual version numbers there with that of Rem 5 Version number held "at the Clsid"
    Last edited by DocAElstein; 04-10-2025 at 01:56 AM.

  9. #19
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    Coding discussed in last post.
    Results and conclusions in next posts

    Code:
    Option Explicit
    Sub BonnieBonnieBoundsOfCLSIDs()       ' https://www.excelfox.com/forum/showthread.php/2997-Testies-external-shared-Libraries-regedit-registry?p=25037&viewfull=1#post25037                         ' KeksXP()
    Rem 0
    On Error GoTo OtherError
    Dim Ws As Worksheet: Set Ws = Me
     Let Ws.Range("A1:I1") = Array("Ind  Rw", "TypeName(Obj)", "ProgID", "Clsid", "Version at Clsid", "TypeLib Guid", "Version at TypeLib", "Human readable name", "File")
    'Me.Columns("A:I").Clear
    Dim StrCom As String: Let StrCom = "."
    Dim RegInfoPro As Object: Set RegInfoPro = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & StrCom & "\root\default:StdRegProv")
    Dim RegHive As Long: Let RegHive = -214748364.8 * 10
    Rem 1 Clsids  - for Clsid output, (but also to use for the other outputs)
    Dim Clsids() As Variant
    RegInfoPro.EnumKey RegHive, "CLSID", Clsids() '   Computer\HKEY_CLASSES_ROOT , CLSID , here comes the big array of all ya Clsids
    Dim ClsInfCnt As Long, Rw As Long: Let Rw = 1 '   This keeps track of the rows - there will likely be more than there are Clsids as we need an extra row for versions at the TypeLib place
        For ClsInfCnt = LBound(Clsids()) To UBound(Clsids())   ' The main Clsid Loop =======================
         Let Rw = Rw + 1 ' Every Clsid is on a new line
         Let Ws.Range("A" & Rw & "") = ClsInfCnt & "  " & Rw ' The first is a 0 and in the array is "CSID"  after that in the array you get the  { Guid thingy }  format    https://i.postimg.cc/mrHxggQD/Computer-HKEY-CLASSES-ROOT-CLSID.jpg
         Let Ws.Range("D" & Rw & "") = Clsids(ClsInfCnt) ' The main  { Clsid thingy }
        Rem 3 InprocServer32  '  This seems to be the  .dll  or similar file
        Dim IprcSvr32 As Variant
        RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\InprocServer32", "", IprcSvr32
            If IsNull(IprcSvr32) Then
             Let Ws.Range("I" & Rw & "") = " -"
            Else
             Let Ws.Range("I" & Rw & "") = IprcSvr32
            End If
        Rem 4  ProgID  (- see Mike here  https://eileenslounge.com/viewtopic.php?p=326247#p326247 ) if there is one held "at the Clsid"
        Dim PrgID As Variant
        RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\ProgID", "", PrgID
            If IsNull(IprcSvr32) Then
             Let Ws.Range("C" & Rw & "") = " -"
            Else
             Let Ws.Range("C" & Rw & "") = PrgID
            End If
        Rem 5  Version numnber if there is one held "at the Clsid"
        Dim CGVers As Variant
        RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\Version", "", CGVers
            If IsNull(CGVers) Then
             Let Ws.Range("E" & Rw & "") = " -"
            Else
             Let Ws.Range("E" & Rw & "") = "'" & CGVers
            End If
        Rem 6 TypeLib Guid if there is one held "at the Clsid"
        Dim TypeLibGuid As Variant
        RegInfoPro.getstringvalue RegHive, "CLSID\" & Clsids(ClsInfCnt) & "\TypeLib", "", TypeLibGuid
            If IsNull(TypeLibGuid) Then
             Let Ws.Range("F" & Rw & "") = " -"
            Else ' Time to get the array of versions
             Let Ws.Range("F" & Rw & "") = TypeLibGuid '                       The Guid related to "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external Library reference from the VB Editor , and the one to use in the .AddFromGuid
            Dim Vers As Variant, CntV As Long          ' Vers can be ab array or  Null
            '6b)
            RegInfoPro.EnumKey RegHive, "TypeLib\" & TypeLibGuid, Vers
                If IsNull(Vers) Then
                    Let Ws.Range("G" & Rw & "") = "Null  versions at  Computer\HKEY_CLASSES_ROOT\TypeLib"
                Else
                    For CntV = LBound(Vers) To UBound(Vers)
                         Let Ws.Range("G" & Rw & "") = "'" & Vers(CntV)
                        Dim Description As String ' Might think about having this Variant. This is the "human readable description" or "TypeLib human readable name" given in that little window which you use to check a external Library reference from the VB Editor , and the one to use in the .AddFromGuid
                        RegInfoPro.getstringvalue RegHive, "TypeLib\" & TypeLibGuid & "\" & Vers(CntV), "", Description
                         Let Ws.Range("H" & Rw & "") = Description
                        If CntV < UBound(Vers) Then Let Rw = Rw + 1 ' we need an extra line for the next version
                    Next CntV
                End If
            End If
        Rem 7 Try to make an object type  ' Do this last as it can crash and/ or set the Devil loose
        Dim LateBndObj As Object
        On Error GoTo BadObjType ' I expect the next line often to error when I try to use
         Set LateBndObj = CreateObject("New:" & Clsids(ClsInfCnt) & "")
        On Error GoTo OtherError
         Let Ws.Range("B" & Rw & "") = TypeName(LateBndObj)
    BonniBanksOfLochLomond:  '
        Next ClsInfCnt ' The main Clsid loop =============================================================
    Exit Sub
    BadObjType:
     Let Ws.Range("B" & Rw & "") = "Err '" & Err.Number & "': " & Err.Description
     Let Ws.Range("B" & Rw & "").Font.Color = 12632256
    On Error GoTo -1
    On Error GoTo OtherError
    GoTo BonniBanksOfLochLomond ' https://eileenslounge.com/viewtopic.php?p=326446#p326446
    OtherError:
    Stop
    Debug.Print "Err '" & Err.Number & "': " & Err.Description & "   " & ClsInfCnt & "  " & Rw
    Stop
    Resume Next
    End Sub
    
    Attached Files Attached Files
    Last edited by DocAElstein; 04-10-2025 at 12:45 PM.

  10. #20
    Fuhrer, Vierte Reich DocAElstein's Avatar
    Join Date
    Aug 2014
    Posts
    9,521
    Rep Power
    10
    This and the next post discuses the use and results of the coding from the last post in general terms, and in particular the typical errors and crashes. The next post discusses the results and conclusions in more detail.

    Coding is development aid, mainly for use in F8 step mode. ( Rem 7 section problems )
    The coding is more of a development tool, and aid, but is of little use as a code to run outright. This is mainly because of section Rem 7, which frequently causes crashes and other awkward happenings, and can even cause permanent effects and even damage to a computer.
    Often Excel recovers itself after a crash, and fortunately seems to often return to a state just before the crash, so this is why section Rem 7 is done towards the end of a loop, as then information obtained from the other sections is often preserved when Excel re opens after recovering itself after a crash.
    Also it is much easier to see accurately where a problem occurs in F8 step mode, as a run may miss a problem occasionally or a few problems may sometimes occur in different places before the coding stops/ crashes
    It is unlikely that you can do much useful with this coding in, less than a day or two. It is only of use if you are having a detailed look at the Guids.
    Having said that, if you remove section Rem 7, then you may get an entire run without errors. The coding is still quite slow and inefficient, but that is much better for learning and experimenting and learning, since the less efficient spreadsheet interaction codings both allow you to see better what is going on as well as catching results before a crash/ unexpected code stop.
    The problems and errors are discussed very approximately in order of most significance and highest number of occurrences.

    There are 4972 Clsid entries in the registry on the old XP computer used

    Main Crashes
    This is both the most predominant and most consistent problem. The cause and effect is almost always the same. A crash occurs at Obj = CreateObject("New:" & [The Clsid under investigation] & ""), and usually Excel recovers itself completely and even has all data obtained up to the crash. So for example in the example screen shot, a crash occurred for the Clsid array element of indicia 168 and 183, so we have no information in cells A168 or A183, ( TypeName(Obj) ), but we have some information in the other columns for those 2 Clsid
    https://i.postimg.cc/PqHtYYPd/Crash.jpg
    Crash.JPG


    Often in such a case we also have no information in the third column ( ProgID ), but occasional there is also information there as well
    https://i.postimg.cc/C1PY32JK/Crash-2.jpg
    Crash 2.JPG



    When this crash occurs, (and I would typically be running in F8 step mode, so clearly I would see that the error occurs at section Rem 7 at that indicia/row number), then, on restart, I would change in the coding the lower bound in the loop to 1 above the indicia which caused the problem, ( and correspondingly change the value of the variable Rw )
    For example, after the first crash shown, I would, (before running the coding in F8 step mode), change the coding to
    Code:
    Dim ClsInfCnt As Long, Rw As Long: Let Rw = 194 '   This keeps track of the rows - there will likely be more than there are Clsids as we need an extra row for versions at the TypeLib place
        For ClsInfCnt = 169(Clsids()) To UBound(Clsids())   ' The main Clsid Loop =======================
         Let Rw = Rw + 1 ' Every Clsid is on a new line
         Let Ws.Range("A" & Rw & "") = ClsInfCnt & "  " & Rw ' The first is a 0 and in the array is "CSID"  after that in the array you get the  { Guid thingy }  format    https://i.postimg.cc/mrHxggQD/Computer-HKEY-CLASSES-ROOT-CLSID.jpg
         Let Ws.Range("D" & Rw & "") = Clsids(ClsInfCnt) ' The main  { Clsid thingy }
    Last edited by DocAElstein; 04-10-2025 at 12:59 PM.

Similar Threads

  1. Replies: 23
    Last Post: 04-10-2025, 01:36 AM
  2. Replies: 9
    Last Post: 05-13-2021, 02:31 PM
  3. Testies
    By sandy666 in forum Test Area
    Replies: 0
    Last Post: 05-27-2020, 06:10 AM
  4. Combobox Not Working In Excel Workbook Shared Mode
    By peter renton in forum Excel Help
    Replies: 15
    Last Post: 06-03-2013, 01:25 PM
  5. Get External Data Error
    By marreco in forum Excel Help
    Replies: 2
    Last Post: 01-05-2013, 08:20 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •