public bool ParseParams(string[] args)
        {
            try
            {
                for (int i = 0; i < args.Length; i += 2)
                {
                    if (!args[i].StartsWith("-") || (i + 1 == args.Length))
                        return false;

                    if (args[i].Equals("-Context"))
                    {
                        if (args[i + 1].Equals("User"))
                            m_context = X509CertificateEnrollmentContext.ContextUser;
                        else if (args[i + 1].Equals("Machine"))
                            m_context = X509CertificateEnrollmentContext.ContextAdministratorForceMachine;
                        else
                            return false;
                    }
                    else if (args[i].Equals("-TemplateName"))
                        m_strTemplateName = args[i + 1];
                    else if (args[i].Equals("-PolicyServerAuthType"))
                    {
                        if (args[i + 1].Equals("Kerberos"))
                            m_PolicyServerAuthType = X509EnrollmentAuthFlags.X509AuthKerberos;
                        else if (args[i + 1].Equals("UsernamePassword"))
                            m_PolicyServerAuthType = X509EnrollmentAuthFlags.X509AuthUsername;
                        else
                            return false;
                    }
                    else if (args[i].Equals("-PolicyServerUrl"))
                        m_strPolicyServerUrl = args[i + 1];
                    else if (args[i].Equals("-PolicyServerUsername"))
                        m_strPolicyServerUsername = args[i + 1];
                    else if (args[i].Equals("-PolicyServerPassword"))
                        m_strPolicyServerPassword = args[i + 1];
                    else if (args[i].Equals("-EnrollmentServerAuthType"))
                    {
                        if (args[i + 1].Equals("Kerberos"))
                            m_EnrollmentServerAuthType = X509EnrollmentAuthFlags.X509AuthKerberos;
                        else if (args[i + 1].Equals("UsernamePassword"))
                            m_EnrollmentServerAuthType = X509EnrollmentAuthFlags.X509AuthUsername;
                        else
                            return false;
                    }
                    else if (args[i].Equals("-EnrollmentServerUrl"))
                        m_strEnrollmentServerUrl = args[i + 1];
                    else if (args[i].Equals("-EnrollmentServerUsername"))
                        m_strEnrollmentServerUsername = args[i + 1];
                    else if (args[i].Equals("-EnrollmentServerPassword"))
                        m_strEnrollmentServerPassword = args[i + 1];
                    else
                        return false;
                }
             }
            catch(System.ArgumentException e)
            {
                Console.WriteLine("Error: {0}", e.Message);
                return false;
            }

            //Check if necessary members were set
            if (m_strTemplateName == null                                      ||
                m_PolicyServerAuthType == X509EnrollmentAuthFlags.X509AuthNone ||
                m_strPolicyServerUrl == null                                   ||
                m_strEnrollmentServerUrl == null)
                return false;

            //Set enrollment server to the same auth type as policy server
            //if enrollment server auth type was not passed
            if (m_EnrollmentServerAuthType == X509EnrollmentAuthFlags.X509AuthNone)
            {
                m_EnrollmentServerAuthType = m_PolicyServerAuthType;
                m_strEnrollmentServerUsername = m_strPolicyServerUsername;
                m_strEnrollmentServerPassword = m_strPolicyServerPassword;
            }

            return true;
        }