Dear sir,
i got a TFT device attendance 3.5 inch and iam using SDK 6.2.4.11 iam using windows 10 LTSC Enterprize 64 bit
when running , i created a windows service on it when i try to run it, it does not work and cause an error 1053 :Error 1053: "The service did not respond in a timely fashion ... ,is there any conflict between windows 10 Enterprize and the SDK that i am using
i attach my service that iam registering to windows 10 64 bit Enterprize(64 bit) i try it on windows 10 pro-64 bit (my personal computer) and it is working , is there any prerequisite files should i install on the client computer(where the problem occurs)

also i attach the sdk iam using , iam deploying the service on my personal computer and run it on the client computer

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
using System.IO;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess;
using zkemkeeper;

namespace Att_Service2
{
    public partial class Service1 : ServiceBase
    {
        //Timer timer = new Timer();
        //public zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
        //public zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
        //ZkSoftwareEU.CZKEUEMNetClass axCZKEM1 = new ZkSoftwareEU.CZKEUEMNetClass();
        zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();        
        private bool bIsConnected = false;//the boolean value identifies whether the device is connected
        private int iMachineNumber = 1;//the serial number of the device.After connecting the device ,this value will be changed.
        ServiceController service = new ServiceController("Atten_Service2");
        Timer timer = new Timer(); // name space(using System.Timers;)  
        //string IP = "192.168.0.201";
        //int Port = 4370;
        string sdwEnrollNumber = "";
        int idwTMachineNumber = 0;
        int idwEMachineNumber = 0;
        int idwVerifyMode = 0;
        int idwInOutMode = 0;
        int idwYear = 0;
        int idwMonth = 0;
        int idwDay = 0;
        int idwHour = 0;
        int idwMinute = 0;
        int idwSecond = 0;
        int idwWorkcode = 0;

        int idwErrorCode = 0;
        int iGLCount = 0;
        int iIndex = 0;
       // string TNS = "DATA Source=192.168.0.2:1521/ORCL;USER ID=PROKEM;Password=PROKEM";
        //     string       TNS1 = "DATA Source=136.243.14.106:1521/ORCL;USER ID=ELMASSALLA;Password=ELMASSALLA";

        public Service1()
        {
            InitializeComponent();
        }
        protected override void OnStart(string[] args)
        {
            // WriteToFile("Service is started at " + DateTime.Now);
            timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
            timer.Interval = 600000; //100 seconds instead of 10 seconds   --
            timer.Enabled = true;


        }
        protected override void OnStop()
        {
            // WriteToFile("Service is stopped at " + DateTime.Now);
        }

        public void sendToOracle(int iMachineNumber, string sdwEnrollNumber, int verifyMode, DateTime Date, OracleConnection ora)
        {
            int c1;
            string ID;
            int Code;
            c1 = iMachineNumber;
            ID = sdwEnrollNumber;
            Code = verifyMode;
            DateTime ATT;
            ATT = Date;
            OracleCommand oracmd = new OracleCommand();
            oracmd.CommandText = "insert into TA_ATTENDANCE_SHEET_LOG(c1,ID,Code,ATT) values(:c1,:ID,:Code,:ATT)";
            oracmd.Connection = ora;
            try
            {
                //ora.Open();
                // MessageBox.Show("Connection Successfully");
                oracmd.Connection = ora;  //must take open connection
                oracmd.Parameters.Add(":c1", c1);
                oracmd.Parameters.Add(":ID", ID);
                oracmd.Parameters.Add(":Code", Code);
                oracmd.Parameters.Add(":ATT", ATT);
                oracmd.ExecuteNonQuery();
                //  MessageBox.Show("data inserted successfully");
                //DataTable dt = new DataTable();
                //OracleDataAdapter da = new OracleDataAdapter("select * from  Dummy", ora);
                //da.Fill(dt);
                //dataGridView1.DataSource = dt;
                WriteToFile("Data inserted successfully  at " + DateTime.Now);

                oracmd.Dispose();

            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message.ToString());
                WriteToFile(ex.Message+" at "+ DateTime.Now +"  Fail to insert in table");
            }

        }//end function 

        public void WriteToFile(string Message)
        {
            string path = "C:\\Logs";
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            //AppDomain.CurrentDomain.BaseDirectory +
            string filepath =  "C:\\Logs\\ServiceLog_" + DateTime.Now.Date.ToShortDateString().Replace('/', '_') + ".txt";
            if (!File.Exists(filepath))
            {
                // Create a file to write to.   
                using (StreamWriter sw = File.CreateText(filepath))
                {
                    sw.WriteLine(Message);
                }
            }
            else
            {
                using (StreamWriter sw = File.AppendText(filepath))
                {
                    sw.WriteLine(Message);
                }
            }
        }

        private void OnElapsedTime(object source, ElapsedEventArgs e)
        {
            //zkemkeeper.CZKEMClass axCZKEM1 = new zkemkeeper.CZKEMClass();
            //ZkSoftwareEU.CZKEUEMNetClass axCZKEM1 = new ZkSoftwareEU.CZKEUEMNetClass();  update 
            //IP =
            string TNS;
            string IP;
            //////////////////update 1-9-2020   to read from text file the Attendance Machine IP and the connection string 
            //data in file should be like 
            //DATA SOURCE = 192.168.2.240:1521 / ORCL; USER ID = ASCON; Password = ASCON-192.168.2.74-
            string totalData = File.ReadAllText(@"c:\Data\Att1.txt"); //read information for attendance Machine1 

            try
            {
                //int index = totalData.IndexOf("-");
                //TNS = totalData.Substring(0, index - 1);
                //IP = totalData.Substring(index+1,totalData.Length-1);
                int index = totalData.IndexOf("-");
                int lastindex = totalData.LastIndexOf("-");
                int IPlength = lastindex - index - 1;
                TNS = totalData.Substring(0, index).ToString().Trim();
                IP = totalData.Substring(index + 1, IPlength).ToString().Trim();
                ///TNS = "DATA SOURCE = 192.168.2.240:1521 / ORCL; USER ID = ASCON; Password = ASCON";
                // IP = "192.168.2.74";
                //MessageBox.Show(TNS + "    " + IP);
                ///TNS = "DATA SOURCE = 192.168.2.240:1521 / ORCL; USER ID = ASCON; Password = ASCON";
                // IP = "192.168.2.74";

            }
            catch (Exception ex) { WriteToFile("No file exist or revise the format to be like  DATA SOURCE = 192.168.2.240:1521 / ORCL; USER ID = ASCON; Password = ASCON-192.168.2.74-   the file path is  c:\\data\\Att1.txt");return;}



            /////////////////////////////////////////////////////////////////////////////////////

           //uncomment this OracleConnection ora = new OracleConnection(TNS);
            //uncomment this OracleDataAdapter ODA;// = new OracleDataAdapter();
            DataTable dt = new DataTable();
            DataTable All_Data = new DataTable();
            string sdwEnrollNumber = "";
            int idwTMachineNumber = 0;
            int idwEMachineNumber = 0;
            int idwVerifyMode = 0;
            int idwInOutMode = 0;
            int idwYear = 0;
            int idwMonth = 0;
            int idwDay = 0;
            int idwHour = 0;
            int idwMinute = 0;
            int idwSecond = 0;
            int idwWorkcode = 0;
            int idwErrorCode = 0;
            int iGLCount = 0;
            int iIndex = 0;

            int Port = 4370;
            bool bIsConnected;
            int iMachineNumber = 1;
            string insertSQL;

            try
            {

              //  ora.Open();
              //  WriteToFile("Connected to Oracle Server " +DateTime.Now);
            }
            catch (Exception ex) { WriteToFile(ex.Message.ToString()+"  "+TNS); return; }

            //1-Oracle Connection 
            //                // uncomment OracleConnection ora = new OracleConnection(TNS);
            //                //uncomment OracleCommand oracmd = new OracleCommand();


            //2-MAchine Connection 

            try
            {
                //bIsConnected = axCZKEM1.Connect_Net(IP, Port);
                //if (bIsConnected == true)
                //{
                //    WriteToFile("Connected to attendance "+IP + DateTime.Now);
                //    //                    //btnConnect.Text = "DisConnect";
                //    //                    //btnConnect.Refresh();
                //    //                    //lblState.Text = "Current State:Connected";
                //    iMachineNumber = 1;//In fact,when you are using the tcp/ip communication,this parameter will be ignored,that is any integer will all right.Here we use 1.
                //    axCZKEM1.RegEvent(iMachineNumber, 65535);//Here you can register the realtime events that you want to be triggered(the parameters 65535 means registering all)

                //}


            }
            catch (Exception ex)
            {
                WriteToFile("Fail to connect to attendance Machine"+IP+":"+Port + DateTime.Now);


            }
            //3- Get Data From Attandance Machine

            try  ///////////today
            {  ////////////////today
                while (axCZKEM1.Connect_Net(IP, Port) != true) ;//****New check connection TCP
                WriteToFile("Connected to attendance "+DateTime.Now.ToString());

                //axCZKEM1.RefreshData(iMachineNumber);//********New 
                axCZKEM1.EnableDevice(iMachineNumber, false);//disable the device today
                WriteToFile("Device Disabled " + DateTime.Now.ToString());
                while (axCZKEM1.ReadAllGLogData(iMachineNumber) != true) ;//**New i added a loop instead of if (axCZKEM1.ReadGeneralLogData(iMachineNumber)) also ch
                                                                  //also changed the Read Generallog to read log
                                                                  //{
                WriteToFile("Begin Loop " + DateTime.Now.ToString());
                while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out sdwEnrollNumber,out idwVerifyMode,
                                out idwInOutMode, out idwYear, out idwMonth,out  idwDay, out  idwHour, out idwMinute, out idwSecond, ref idwWorkcode))//get records from the memory
                    {
                        //                        //insert into Oracle DB 
                        DateTime Date = Convert.ToDateTime(idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString());
                    //  WriteToFile(Date);
                    //MessageBox.Show(iMachineNumber + "-" + sdwEnrollNumber + "-" + Date);
                    /*Commented on 18-7-2020 
                    WriteToFile(iMachineNumber+"-"+ sdwEnrollNumber+"-"+ idwInOutMode+"-"+ Date);
                    ODA = new OracleDataAdapter("select  *  from  dummy where ID='"+ sdwEnrollNumber + "' and ATT='"+Date+"'", ora);
                    ODA.Fill(dt);
                    if(dt.Rows.Count<1)
                    sendToOracle(iMachineNumber, sdwEnrollNumber, idwInOutMode, Date, ora);
                    dt.Clear();
                      */
                    //     MessageBox.Show("inserted Successfully");

                    //18-7-2020 Added 
                    /////TA_ATTENDANCE_SHEET_LOG

                    //test -send the data to oracle without any checking 14-10-2020
                    //sendToOracle(iMachineNumber, sdwEnrollNumber, idwInOutMode, Date, ora);

                    //if(Convert.ToInt16( sdwEnrollNumber)==14476)
                    try
                    {
                      //  if (Convert.ToInt16(sdwEnrollNumber) == 14476)
                            WriteToFile(iMachineNumber + " " + sdwEnrollNumber + " " + idwInOutMode + " " + Date);
                        //else WriteToFile("");
                    }
                    catch (Exception ex) {
                        //WriteToFile("Fail to Write to File...");
                        //if (!(service.Status.Equals(ServiceControllerStatus.Stopped)) ||!(service.Status.Equals(ServiceControllerStatus.StopPending)))
                        //              service.Start();
                        // if(service.Status==ServiceControllerStatus.Running)  service.Stop();
                        WriteToFile("Exception");

                    }
                    /* i commented this part to send the data direct to Oracle 14-10-2020
                      try
                          {
                              WriteToFile("begin checking dummy table for redundancy data...");
                              ODA = new OracleDataAdapter("select * from TA_ATTENDANCE_SHEET_LOG where ID='" + sdwEnrollNumber + "'", ora);
                              if (All_Data.Rows.Count > 0) All_Data.Clear();
                              ODA.Fill(All_Data);//this is one record
                          }
                          catch (Exception ex) { WriteToFile(ex.Message.ToString() + " at " + DateTime.Now); }

                          ////pass the datatable to the funtion checkifexist to check the timestamp also 
                          int val = Checkifexist(ora, sdwEnrollNumber, Date, All_Data);
                          WriteToFile("value of redundancy " + val.ToString());
                          if (val == 0)
                          {
                              sendToOracle(iMachineNumber, sdwEnrollNumber, idwInOutMode, Date, ora);
                          }

                         */

                }//end while
                WriteToFile("End Of while loop");
                axCZKEM1.EnableDevice(iMachineNumber, true);
                axCZKEM1.Disconnect();//***New
                  //uncomment this  ora.Close();
               // }


     //           else
       //         {
                    //                    // MessageBox.Show("Error in reading Data ");           
                    /// ///  WriteToFile("Service Error " + DateTime.Now);
      //          }



            }
          catch (Exception ex)
          {
                if (service.Status == ServiceControllerStatus.Running) service.Stop();
                WriteToFile("error " + ex.ToString()+ " at "+DateTime.Now.ToString() );
          }//today


        }//end function 
        public int Checkifexist(OracleConnection ora, string EnrollNum, DateTime dt, DataTable All_data)
        {
            OracleCommand oracmd = new OracleCommand();
            OracleDataReader DR;
            DataTable dt1 = new DataTable();

            string d;
            foreach (DataRow dr in All_data.Rows)
            {
                d = dr["ATT"].ToString(); //the ATT column - Date column-



                if (!Convert.ToBoolean(d.CompareTo(dt.ToString())))
                {
                    WriteToFile("Added new log:"+EnrollNum+" at "+d.ToString());      
                    return 1; //the value exists   in ORacle
                }

            }
            return 0; //the value does not exist
        }




    }//end class
}//end namespace`

Dani AI

Generated

reported an Error 1053 when the attendance-service runs on a client machine (works on a personal Win10 Pro box). Error 1053 simply means the Service Control Manager didn't get a timely response from the service. The usual, practical root causes are: OnStart blocking or throwing an exception (including work done in the service constructor or class-level initializers), a native/COM SDK not registered or mismatched bitness, missing managed dependencies, or permission differences between machines. As noted, double-check the exact Windows SKU/build on the problem machine — differences there can expose registration or policy gaps.

Checklist of focused troubleshooting and fixes (do these in order):

  • Inspect Event Viewer (System and Application) for the real exception and check the service's own logs for the first error text — that message is the most useful clue.
  • Avoid long/blocking work during service startup. Move SDK/device initialization off the SCM thread (do not instantiate COM/SDK objects at class-level). Use a background task started from OnStart so OnStart returns quickly (SCM expects a fast response, typically on the order of tens of seconds). Example pattern:
protected override void OnStart(string[] args)
{
    Task.Run(() =>
    {
        try
        {
            // create SDK object here and start processing
        }
        catch (Exception ex)
        {
            // log exception to file or EventLog
        }
    });
}
  • If the SDK is a COM/ActiveX DLL, ensure it is registered on the client and that the service process bitness matches the SDK (build the service as x86 if the SDK is 32‑bit). Use the correct regsvr32 for 32-bit COM on 64-bit Windows and run it elevated.
  • Make sure all managed assemblies (for example the Oracle driver) are deployed with the service (set Copy Local where appropriate). Verify the service account has access to any files, network resources or folders the service reads/writes.
  • For debugging, run the same code as a console app or attach a debugger to the service process to capture the exception stack trace. RequestAdditionalTime can buy startup time, but the clean fix is to do lengthy initialization on a background thread.

Following those steps resolves most 1053 cases with third‑party device SDKs.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.