locked
Run-time error '429': ActiveX component can't create object

    질문

  • Hi,

     

    I thought this would be the best place to post this question.

     

    I am getting a run-time error within my VB app:

     

    Run-time error '429': ActiveX component can't create object

     

    I have run this application under WinXP and previous Windows operating system fine, but when I installed my application on Windows Vista I get the above error at run-time.

     

    Could anyone suggest how I could resolve this error as I believe it is not a programming error as the app works on other Windows OS's fine. Could it be something to do with registering dll's etc.

     

    Any help would do.

     

    Thanks.

     

     

     

    2007년 9월 6일 목요일 오전 11:23

답변

  • You are missing an ActiveX component on your Vista install.  You can find out which with the Regmon.exe tool from SysInternals.com.  Start it and run your app until you get the error message.  The Regmon output is bit, umm, large.  Work backwards and look for access to a key in HKCR\CLSID that isn't found.  Look for the same key on a PC that doesn't have the problem with Regedit.exe and you'll know what component you're missing.
    2007년 9월 10일 월요일 오후 12:18
  • Mo1234,

     

    Based on your post and the error message, it is difficult to point out the reason that cause the problem becuase there isn't any related information on the application or the ActiveX component. I would like to provide some suggestions as follows:

     

    Creating objects requires that the object's class be registered in the system registry and that any associated dynamic-link libraries (DLL) be available. This error has the following causes and solutions:

     

    1. The class isn't registered. For example, the system registry has no mention of the class, or the class is mentioned, but specifies either a file of the wrong type or a file that can't be found.


    If possible, try to start the object's application. If the registry information is out of date or wrong, the application should check the registry and correct the information. If starting the application doesn't fix the problem, rerun the application's setup program.

     

    2. A DLL required by the object can't be used, either because it can't be found, or it was found but was corrupted.
    Make sure all associated DLLs are available. For example, the Data Access Object (DAO) requires supporting DLLs that vary among platforms. You may have to rerun the setup program for such an object if that is what is causing this error.

     

    3. The object is available on the machine, but it is a licensed Automation object, and can't verify the availability of the license necessary to instantiate it.


    Some objects can be instantiated only after the component finds a license key, which verifies that the object is registered for instantiation on the current machine. When a reference is made to an object through a properly installed type library or object library, the correct key is supplied automatically.

     

    If the attempt to instantiate is the result of a CreateObject or GetObject call, the object must find the key. In this case, it may search the system registry or look for a special file that it creates when it is installed, for example, one with the extension .lic. If the key can't be found, the object can't be instantiated. If an end user has improperly set up the object's application, inadvertently deleted a necessary file, or changed the system registry, the object may not be able to find its key. If the key can't be found, the object can't be instantiated. In this case, the instantiation may work on the developer's system, but not on the user's system. It may be necessary for the user to reinstall the licensed object.

     

    4. You are trying to use the GetObject function to retrieve a reference to class created with Visual Basic.
    GetObject can't be used to obtain a reference to a class created with Visual Basic.

     

    5. Access to the object has explicitly been denied. For example, you may be trying to access a data object that's currently being used and is locked to prevent deadlock situations. If that's the case, you may be able to access the object at another time.

     

    Hope that can help you.

     

     

    2007년 9월 10일 월요일 오전 9:00

모든 응답

  • Mo1234,

     

    Based on your post and the error message, it is difficult to point out the reason that cause the problem becuase there isn't any related information on the application or the ActiveX component. I would like to provide some suggestions as follows:

     

    Creating objects requires that the object's class be registered in the system registry and that any associated dynamic-link libraries (DLL) be available. This error has the following causes and solutions:

     

    1. The class isn't registered. For example, the system registry has no mention of the class, or the class is mentioned, but specifies either a file of the wrong type or a file that can't be found.


    If possible, try to start the object's application. If the registry information is out of date or wrong, the application should check the registry and correct the information. If starting the application doesn't fix the problem, rerun the application's setup program.

     

    2. A DLL required by the object can't be used, either because it can't be found, or it was found but was corrupted.
    Make sure all associated DLLs are available. For example, the Data Access Object (DAO) requires supporting DLLs that vary among platforms. You may have to rerun the setup program for such an object if that is what is causing this error.

     

    3. The object is available on the machine, but it is a licensed Automation object, and can't verify the availability of the license necessary to instantiate it.


    Some objects can be instantiated only after the component finds a license key, which verifies that the object is registered for instantiation on the current machine. When a reference is made to an object through a properly installed type library or object library, the correct key is supplied automatically.

     

    If the attempt to instantiate is the result of a CreateObject or GetObject call, the object must find the key. In this case, it may search the system registry or look for a special file that it creates when it is installed, for example, one with the extension .lic. If the key can't be found, the object can't be instantiated. If an end user has improperly set up the object's application, inadvertently deleted a necessary file, or changed the system registry, the object may not be able to find its key. If the key can't be found, the object can't be instantiated. In this case, the instantiation may work on the developer's system, but not on the user's system. It may be necessary for the user to reinstall the licensed object.

     

    4. You are trying to use the GetObject function to retrieve a reference to class created with Visual Basic.
    GetObject can't be used to obtain a reference to a class created with Visual Basic.

     

    5. Access to the object has explicitly been denied. For example, you may be trying to access a data object that's currently being used and is locked to prevent deadlock situations. If that's the case, you may be able to access the object at another time.

     

    Hope that can help you.

     

     

    2007년 9월 10일 월요일 오전 9:00
  • You are missing an ActiveX component on your Vista install.  You can find out which with the Regmon.exe tool from SysInternals.com.  Start it and run your app until you get the error message.  The Regmon output is bit, umm, large.  Work backwards and look for access to a key in HKCR\CLSID that isn't found.  Look for the same key on a PC that doesn't have the problem with Regedit.exe and you'll know what component you're missing.
    2007년 9월 10일 월요일 오후 12:18
  • Hi Mo1234,

    Complementing excellent's explanations of my colleagues I remember in some Vista scenarios installing old VB aplications, may occur when are referencing an independent EXE ActiveX component application from a normal user, probably your component is correctly and already installed in System32 folder, if this is true, you can correct this trying to execute this ‘exe’ component for first time as administrator, simple click with mouse left button and ‘run as administrator’, after this first execution the component auto-star every time when the main app create an instance.  In other case you need perform the steps related earlier by Nobugz. Also if the ActiveX is not registered you can do this manually using the RegSrv32 from administrator prompt.

    Regards,
    Pep Lluis,


    MVP - Visual Developer
    • 답변으로 제안됨 s_wenis 2012년 11월 26일 월요일 오후 5:08
    • 답변으로 제안 취소됨 s_wenis 2012년 11월 26일 월요일 오후 5:08
    2008년 6월 9일 월요일 오전 9:51
  • Hi Mo1234,

    Complementing excellent's explanations of my colleagues I remember in some Vista scenarios installing old VB aplications, may occur when are referencing an independent EXE ActiveX component application from a normal user, probably your component is correctly and already installed in System32 folder, if this is true, you can correct this trying to execute this ‘exe’ component for first time as administrator, simple click with mouse left button and ‘run as administrator’, after this first execution the component auto-star every time when the main app create an instance.  In other case you need perform the steps related earlier by Nobugz. Also if the ActiveX is not registered you can do this manually using the RegSrv32 from administrator prompt.

    Regards,
    Pep Lluis,


    MVP - Visual Developer

    Just wanted to say thanks PepLuis, this worked perfectly for me with a different software on Win7.  Running as Admin was the solution.
    2010년 1월 6일 수요일 오후 7:03
  • I had this problem. I like making programs with visual basic 6.0. Every time I tried to load the program at my friends  house I would get runtime error 429 .

    Also while trying to save the program at home I would get runtime error 429 activex. Runtime error 429 from my understanding is because of left over entries or missing controls. Look it up on google and you should find an answer.

    2011년 3월 3일 목요일 오전 11:45
  • Hi,

    If you still having this problems, and are talking around run your program in Windows Vista and fordward, before any others, you can try to run changin the user control account settings to "never notify".

    Regards,
    Pep Lluis,


    MVP - Visual Developer
    2011년 3월 11일 금요일 오후 4:59