Error al insertar datos de huellas digitales en la tabla de la base de datos

Estoy trabajando en un proyecto que ya está construido y es funcional en este momento. Pero hay un problema cuando intento insertar una huella digital del dispositivo en la tabla de la base de datos. Déjame escribir que estaba funcionando bien antes. Pero cuando configuro una nueva computadora o muevo el proyecto a un nuevo entorno, arroja una excepción:

Recuperando la fábrica de la clase COM para el componente con CLSID {00853A19-BD51-419B-9269-2DABE57EB61F} falló debido al siguiente error: 80040154 Clase no registrada (Excepción de HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Este es un sistema de asistencia de huellas digitales que utiliza ZkemKeeper y el archivo dll se adjunta con el proyecto. Aquí está el fragmento de código:

/**This is a list of the users from database that uses fingerprint system - Starts**/
List<AttMachineBO> lstfrom = new List<AttMachineBO>();

for (int i = 0; i < dgv_Machine.Rows.Count; i++)
{
   if (dgv_Machine.Rows[i].Cells[0].Value == null)
   {
      dgv_Machine.Rows[i].Cells[0].Value = false;
   }

   if ((bool)dgv_Machine.Rows[i].Cells[0].Value == true)
   {
      AttMachineBO obj = new AttMachineBO();
      obj.Mechine_No = dgv_Machine.Rows[i].Cells[1].Value.ToString();
      obj.Machine_Name = dgv_Machine.Rows[i].Cells[2].Value.ToString();
      obj.IP_Address = dgv_Machine.Rows[i].Cells[3].Value.ToString().Trim();

      lstfrom.Add(obj);
   }
} 
/**This is a list of the users from database that uses fingerprint system - Ends**/

Básicamente, el código anterior es cargar los detalles del usuario de la tabla asignada con una dirección IP y, al hacer clic, los datos de la huella digital se insertarán en la tabla de la base de datos desde el dispositivo de asistencia (ZKTeco i-clock 580). Para insertar datos, se utiliza el siguiente código:

if (lstfrom.Count > 0)
{
   for (int x = 0; x < lstfrom.Count; x++)
   {
       /Here the exception starts/
       **zkemkeeper.CZKEMClass fromM = new zkemkeeper.CZKEMClass();**

       lblStatus.Text = "Connect To Device " + lstfrom[x].Machine_Name + " , IP=" + lstfrom[x].IP_Address + ".....";
        lblStatus.Refresh();

            if (fromM.Connect_Net(lstfrom[x].IP_Address, 4370))
            {
                lblStatus.Text = "Register The Device To PC";
                lblStatus.Refresh();

                if (fromM.RegEvent(fromM.MachineNumber, 65535))
                {
                    lblStatus.Text = "Reading All Data From Machine";
                    lblStatus.Refresh();
                    fromM.ReadAllTemplate(fromM.MachineNumber);

                    List<AttMachineBO> datalst = new List<AttMachineBO>();

                    string empId = "", name = "", fingerprintData = "", fingerprintData2 = "", password = ""; ;
                    int prev = 0, TmpLength = 0;
                    bool isEnable = false;
                    int k = 0;

                    while (fromM.SSR_GetAllUserInfo(fromM.MachineNumber, out empId, out name, out password, out prev, out isEnable))
                    {
                        lblStatus.Text = "Processing Employee with ID=" + empId + ", Name =" + name;
                        lblStatus.Refresh();

                        AttMachineBO bo = new AttMachineBO();
                        bo.EMP_ID = empId;
                        bo.EMP_Name = name;
                        bo.IsfingerSaa = true;
                        bo.IP_Address = lstfrom[x].IP_Address;
                        bo.Com_Id = HRMS.MAIN.HRMS.Company;

                        bool f = fromM.SSR_GetUserTmpStr(fromM.MachineNumber, empId, 0, out fingerprintData, out TmpLength);
                        bo.finger1 = fingerprintData != null ? fingerprintData : "";
                        f = fromM.SSR_GetUserTmpStr(fromM.MachineNumber, empId, 1, out fingerprintData, out TmpLength);
                        bo.finger2 = fingerprintData != null ? fingerprintData : "";

                        datalst.Add(bo);
                    }

                    bool flag = Facede.Attendance.InserDatabase(datalst);

                    if (flag)
                    {
                        MessageBox.Show("Insert Successfully.");
                        return;
                    }
                    else
                    {
                        MessageBox.Show("Error In Insert.");
                        return;
                    }
                }
                else
                {
                    lblStatus.Text = "Device registration failed.";
                    lblStatus.Refresh();
                }
            }
            else
            {
                lblStatus.Text = "Failed to stablish connecting to device =" + lstfrom[x].Machine_Name + ", IP =" + lstfrom[x].IP_Address + "...."; ;
                lblStatus.Refresh();
            }
     }
} 

He resaltado en el código (Segunda sección del código) desde el inicio de la excepción y un poco confundido cómo resolverlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta