示例#1
0
        public List <string> GetCardReaders()
        {
            // Вывод списка кард-ридеров, установленных в системе
            var manager = new PCSCReadersManager();

            manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);
            var cards          = manager.OfType <ISCard>().ToList();
            var activeDevsName = new List <string>();

            foreach (var card in cards)
            {
                PolicySmartcardBase testConnect = null;
                try
                {
                    testConnect = new PolicySmartcardBase(card);
                }
                catch (Exception)
                {
                    testConnect = null;
                }
                finally
                {
                    if (testConnect != null)
                    {
                        activeDevsName.Add(testConnect.BaseCard.ReaderName);
                    }
                }
            }

            manager.ReleaseContext();
            return(activeDevsName);
        }
示例#2
0
        public List <string> GetRuTokens()
        {
            // Вывод списка токенов, установленных в системе
            var manager = new PCSCReadersManager();

            manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);
            var tokens         = manager.OfType <ISCard>().Where(device => device.ReaderName.ToLower().Contains("tok")).ToList();
            var activeDevsName = new List <string>();

            foreach (var token in tokens)
            {
                PolicySmartcardBase testConnect = null;
                try
                {
                    testConnect = new PolicySmartcardBase(token);
                    testConnect.Connect();
                }
                catch
                {
                    testConnect = null;
                }
                finally
                {
                    if (testConnect != null)
                    {
                        activeDevsName.Add(testConnect.BaseCard.ReaderName);
                        testConnect.Disconnect();
                    }
                }
            }

            manager.ReleaseContext();
            return(activeDevsName);
        }
示例#3
0
        /// <summary>
        /// Информация об СМО
        /// </summary>
        public SmoModel ReadSMOInformation(PolicySmartcardBase policy)
        {
            SmoModel       result = new SmoModel();
            SMOInformation currentSmoInformation = policy.GetCurrentSMOInformation();

            if (currentSmoInformation == null)
            {
                return(result);
            }
            result.SmoOgrn  = currentSmoInformation.OGRN;
            result.SmoOkato = currentSmoInformation.OKATO;
            result.SmoBegin = this.FormatPolicyDate(new DateTime?(currentSmoInformation.InsuranceStartDate), "Отсутствует");
            result.SmoEnd   = this.FormatPolicyDate(currentSmoInformation.InsuranceExpireDate, "Не ограничено");
            if (!_tersmoService.LoadDictionary().Any())
            {
                return(result);
            }

            var tersmo = _tersmoService.LoadDictionary().
                         FirstOrDefault(x => x.Q_OGRN.ToString() == currentSmoInformation.OGRN &&
                                        x.TF_OKATO.ToString() == currentSmoInformation.OKATO);

            if (tersmo != null)
            {
                result.SmoRegion = tersmo.Q_NAME;
                result.SmoName   = tersmo.Q_FNAME;
            }
            else
            {
                result.SmoRegion = "Не найден";
                result.SmoName   = "Не найден";
            }
            return(result);
        }
示例#4
0
        public CardInfoStrings GetCardInfo()
        {
            var manager = new PCSCReadersManager();

            // Установление соединения с смарт-карт API
            manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);

            // Вывод списка ридеров в консоль
            if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveCardReader))
            {
                // Получение объекта ридера
                var card = manager[ActiveCardReader];

                // Создание объекта для работы с картой полиса ОМС
                var policy = new PolicySmartcardBase(card);

                // Подключение к карте полиса ОМС
                policy.Connect();

                // Чтение информации о карте полиса ОМС ( Идентификационные данные )
                var cid = policy.GetCardID();

                // Чтение информации о карте полиса ОМС ( Информация о микросхеме от производителя )
                var ccd = policy.GetICCD();

                CardInfoStrings cardInfo = null;
                if (cid != null)
                {
                    cardInfo = new CardInfoStrings
                    {
                        CardHexNum = cid.SerialNumber.ToHexString(),
                        CardType   = cid.CardType,
                        Vers       = cid.CardVersion,
                        InstitId   = cid.InstitutionID.ToHexString(),
                        AddInfo    = cid.AdditionalInfo.ToHexString()
                    };
                }

                if (ccd != null)
                {
                    cardInfo            = cardInfo ?? new CardInfoStrings();
                    cardInfo.IssuerCode = ccd.IssuerCode;
                    cardInfo.IssuerData = ccd.IssuerData.ToHexString();
                }

                // Отключение от карты полиса ОМС
                policy.Disconnect();

                // Отключение от смарт-карт API
                manager.ReleaseContext();
                return(cardInfo);
            }

            manager.ReleaseContext();
            return(null);
        }
示例#5
0
        /// <summary>
        /// Чтение информации с карты
        /// </summary>
        public InfoModel ReadInformation(PolicySmartcardBase policy)
        {
            var result = new InfoModel
            {
                Owner = ReadOwnerInformation(policy),
                Smo   = ReadSMOInformation(policy)
            };

            return(result);
        }
示例#6
0
        /// <summary>
        /// Инициализация карты
        /// </summary>
        public bool InitializeCard(PCSCReadersManager cardManager, PolicySmartcardBase policy)
        {
            bool flag;

            try
            {
                ISCard card = cardManager[cardManager.OfType <ISCard>().ToList().First().ReaderName];
                policy = new PolicySmartcardBase(card);
                policy.Connect();
                flag = true;
            }
            catch (Exception ex)
            {
                flag = false;
                throw ex;
            }
            return(flag);
        }
示例#7
0
        /// <summary>
        /// Информация о владельце карты
        /// </summary>
        public OwnerModel ReadOwnerInformation(PolicySmartcardBase policy)
        {
            OwnerModel       result           = new OwnerModel();
            OwnerInformation ownerInformation = policy.GetOwnerInformation();

            if (ownerInformation == null)
            {
                return(result);
            }
            result.OwnerFamily = this.FormatPolicyText(ownerInformation.Identity_1, "Отсутствует");
            result.OwnerName   = this.FormatPolicyText(ownerInformation.Identity_2, "Отсутствует");
            result.OwnerSname  = this.FormatPolicyText(ownerInformation.Identity_3, "Отсутствует");
            byte?  sex = ownerInformation.Sex;
            string str;

            if ((sex.GetValueOrDefault() != (byte)1 ? 0 : (sex.HasValue ? 1 : 0)) == 0)
            {
                sex = ownerInformation.Sex;
                str = (sex.GetValueOrDefault() != (byte)2 ? 0 : (sex.HasValue ? 1 : 0)) != 0 ? "Женский" : "Неизвестно";
            }
            else
            {
                str = "Мужской";
            }
            result.OwnerSex     = str;
            result.OwnerBdate   = this.FormatPolicyDate(ownerInformation.BirthDate, "Отсутствует");
            result.OwnerBplace  = this.FormatPolicyText(ownerInformation.BirthPlace, "Отсутствует");
            result.PoliceNumber = ownerInformation.PolicyNumber;
            result.PoliceDate   = this.FormatPolicyDate(ownerInformation.ExpireDate, "Отсутствует");
            result.PoliceLong   = this.FormatPolicyDate(ownerInformation.ExpireDate, "Не ограничено");
            result.PoliceSnils  = this.FormatPolicyText(ownerInformation.SNILS, "Отсутствует");
            if (ownerInformation.Citizenship != null)
            {
                result.Gcode = this.FormatPolicyText(ownerInformation.Citizenship.CoutryCode, "Отсутствует");
                result.Gtext = this.FormatPolicyText(ownerInformation.Citizenship.CoutryCyrillicName, "Отсутствует");
            }
            return(result);
        }
示例#8
0
 private Task ReadInfo()
 {
     while (true)
     {
         System.Threading.Thread.Sleep(1000);
         PCSCReadersManager  CardManager = new PCSCReadersManager();
         PolicySmartcardBase policy      = null;
         try
         {
             if (!_policyService.InitializeReader(ref CardManager))
             {
                 continue;
             }
             else if (!_policyService.InitializeCard(ref CardManager, ref policy))
             {
                 continue;
             }
             else
             {
                 StatusLabel = CardManager.OfType <ISCard>().ToList().First().ReaderName;
                 if (!_isCardInserted)
                 {
                     Information     = _policyService.ReadInformation(ref policy);
                     _isCardInserted = true;
                 }
                 policy.Disconnect();
             }
         }
         catch (Exception ex)
         {
             Information     = _emptyInfoModel;
             StatusLabel     = ex.Message.ToString();
             _isCardInserted = false;
         }
     }
 }
示例#9
0
        public OwnerInfo GetOwnerInfo()
        {
            // Чтение информации о владельце карты полиса ОМС
            var manager = new PCSCReadersManager();

            try
            {
                // Установление соединения с смарт-карт API
                manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);

                // Вывод списка ридеров в консоль
                if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveCardReader))
                {
                    // Получение объекта ридера
                    var card = manager[ActiveCardReader];

                    // Создание объекта для работы с картой полиса ОМС
                    var policy = new PolicySmartcardBase(card);

                    // Подключение к карте полиса ОМС
                    policy.Connect();

                    // Чтение информации о владельце полиса ОМС
                    var ownerInfoCard = policy.GetOwnerInformation();
                    if (ownerInfoCard != null)
                    {
                        var ownerInfo = new OwnerInfo
                        {
                            LastName   = FormatPolicyText(ownerInfoCard.Identity_1, string.Empty),
                            FirstName  = FormatPolicyText(ownerInfoCard.Identity_2, string.Empty),
                            MiddleName = FormatPolicyText(ownerInfoCard.Identity_3, string.Empty),
                            Sex        =
                                ownerInfoCard.Sex == 1 ? "273" : ownerInfoCard.Sex == 2 ? "274" : string.Empty,
                            Birthday   = FormatPolicyDate(ownerInfoCard.BirthDate, string.Empty),
                            BirthPlace = FormatPolicyText(ownerInfoCard.BirthPlace, string.Empty)
                        };

                        if (ownerInfoCard.Citizenship != null)
                        {
                            ownerInfo.CitizenschipCode = FormatPolicyText(ownerInfoCard.Citizenship.CoutryCode, string.Empty);
                            ownerInfo.CitizenschipName = FormatPolicyText(ownerInfoCard.Citizenship.CoutryCyrillicName, string.Empty);
                        }

                        ownerInfo.PolisNumber   = ownerInfoCard.PolicyNumber;
                        ownerInfo.PolisDateFrom = FormatPolicyDate(ownerInfoCard.IssueDate, string.Empty);
                        ownerInfo.PolisDateTo   = FormatPolicyDate(ownerInfoCard.ExpireDate, string.Empty);

                        ownerInfo.Snils = FormatPolicyText(ownerInfoCard.SNILS, string.Empty);

                        try
                        {
                            // Чтение атрибутов безопасности карты полиса ОМС
                            var sod = policy.GetSecurityInformation();
                            ownerInfo.StateEcp = ownerInfoCard.VerifyEDS(sod) ? "Верна" : "Неверна";
                        }
                        catch
                        {
                        }

                        // Отключение от карты полиса ОМС
                        policy.Disconnect();

                        // Отключение от смарт-карт API
                        manager.ReleaseContext();
                        return(ownerInfo);
                    }

                    // Отключение от карты полиса ОМС
                    policy.Disconnect();

                    // Отключение от смарт-карт API
                    manager.ReleaseContext();
                    return(null);
                }

                manager.ReleaseContext();
                return(null);
            }
            catch
            {
                manager.ReleaseContext();
                throw;
            }
        }
示例#10
0
        public SmoInfoStrings GetCurrentSmo()
        {
            // Чтение информации о владельце карты полиса ОМС
            var manager = new PCSCReadersManager();

            // Установление соединения с смарт-карт API
            manager.EstablishContext(READERSCONTEXTSCOPE.SCOPE_USER);

            // Вывод списка ридеров в консоль
            if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ActiveCardReader))
            {
                // Получение объекта ридера
                var card = manager[ActiveCardReader];

                // Создание объекта для работы с картой полиса ОМС
                var policy = new PolicySmartcardBase(card);

                // Подключение к карте полиса ОМС
                policy.Connect();

                // Чтение информации о владельце полиса ОМС
                var smo = policy.GetCurrentSMOInformation();
                if (smo != null)
                {
                    var smoInfo = new SmoInfoStrings
                    {
                        OgrnSmo            = smo.OGRN,
                        Okato              = smo.OKATO,
                        InsuranceStartDate =
                            FormatPolicyDate(smo.InsuranceStartDate, "Отсутствует"),
                        InsuranceEndDate =
                            FormatPolicyDate(smo.InsuranceExpireDate, "Не ограничено")
                    };

                    if (smo.EDS != null)
                    {
                        smoInfo.Eds = new Eds
                        {
                            Certificate = new X509Certificate2(smo.EDS.Certificate).Subject,
                            Ecp         = smo.EDS.Signature.ToHexString()
                        };

                        try
                        {
                            smoInfo.Eds.StateEcp = smo.VerifyEDS() ? "Верна" : "Неверна";
                        }
                        catch
                        {
                        }
                    }

                    policy.Disconnect();
                    manager.ReleaseContext();
                    return(smoInfo);
                }

                // Отключение от карты полиса ОМС
                policy.Disconnect();

                // Отключение от смарт-карт API
                manager.ReleaseContext();
                return(null);
            }

            manager.ReleaseContext();
            return(null);
        }
示例#11
0
        void GetCardData()
        {
            if (ReadersComboBox.Items.Count == 0)
            {
                MessageBox.Show("Не обнаружено подключенных ридеров!");
                return;
            }

            ClearForm();

            PCSCReadersManager manager = new PCSCReadersManager();

            var SA = ReadersComboBox.Items[0].ToString();

            manager.EstablishContext(SmartCard.PCSC.READERSCONTEXTSCOPE.SCOPE_USER);
            if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(SA))
            {
                ISCard card = manager[SA];
                PolicySmartcardBase policy = new PolicySmartcardBase(card);
                policy.Connect();

                try
                {
                    OwnerInformation owner_info = policy.GetOwnerInformation();
                    if (owner_info != null)
                    {
                        textBoxFIO.Text          = FormatPolicyText(owner_info.Identity_1, "") + " " + FormatPolicyText(owner_info.Identity_2, "") + " " + FormatPolicyText(owner_info.Identity_1, "");
                        textBoxSex.Text          = owner_info.Sex == 1 ? "Мужской" : owner_info.Sex == 2 ? "Женский" : "Неизвестно";
                        textBoxDateOfBirth.Text  = FormatPolicyDate(owner_info.BirthDate, "Отсутствует");
                        textBoxPlaceOfBirth.Text = FormatPolicyText(owner_info.BirthPlace, "Отсутствует");

                        if (owner_info.Citizenship != null)
                        {
                            textBoxCountryCode.Text = FormatPolicyText(owner_info.Citizenship.CoutryCode, "Отсутствует");
                            textBoxCountryName.Text = FormatPolicyText(owner_info.Citizenship.CoutryCyrillicName, "Отсутствует");
                        }

                        textBoxPolisNumber.Text = owner_info.PolicyNumber;
                        textBoxPolisDate.Text   = FormatPolicyDate(owner_info.ExpireDate, "Отсутствует");
                        textBoxPolisExpire.Text = FormatPolicyDate(owner_info.ExpireDate, "Не ограничено");
                        textBoxSNILS.Text       = FormatPolicyText(owner_info.SNILS, "Отсутствует");
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message, "Ошибка: ");
                }
                try
                {
                    CardID cid = policy.GetCardID();
                    if (cid != null)
                    {
                        textBoxCardSerial.Text  = cid.SerialNumber.ToHexString();
                        textBoxCardType.Text    = cid.CardType.ToString();
                        textBoxCardVersion.Text = cid.CardVersion.ToString();
                        textBoxCompanyID.Text   = cid.InstitutionID.ToHexString();
                        textBoxInformation.Text = cid.AdditionalInfo.ToHexString();
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message, "Ошибка: ");
                }
                try
                {
                    ICCID ccd = policy.GetICCD();
                    if (ccd != null)
                    {
                        textBoxManufacturerCode.Text = ccd.IssuerCode.ToString();
                        textBoxManufacturerData.Text = ccd.IssuerData.ToHexString();
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message, "Ошибка: ");
                }

                try
                {
                    SMOInformation smo = policy.GetCurrentSMOInformation();
                    if (smo != null)
                    {
                        textBoxOGRN.Text  = smo.OGRN;
                        textBoxOKATO.Text = smo.OKATO;
                        textBoxInsuranceStartDate.Text = FormatPolicyDate(smo.InsuranceStartDate, "Отсутствует");
                        textBoxExpire.Text             = FormatPolicyDate(smo.InsuranceExpireDate, "Не ограничено");
                        textBoxCert.Text = new X509Certificate2(smo.EDS.Certificate).Subject;
                        textBoxECP.Text  = smo.EDS.Signature.ToHexString();
                        //textBoxECPStatus.Text = smo.VerifyEDS() == true ? "Верна" : "Неверна";
                    }
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message, "Ошибка: ");
                }
                policy.Disconnect();
            }
            manager.ReleaseContext();
        }
示例#12
0
        public static void GetData(string args = "")
        {
            PCSCReadersManager manager = new PCSCReadersManager();

            try
            {
                manager.EstablishContext(SmartCard.PCSC.READERSCONTEXTSCOPE.SCOPE_USER);
                if (args != "")
                {
                    ReaderName = args;
                }
                else
                {
                    var list = manager.OfType <ISCard>().ToList();

                    if (list.Count > 0)
                    {
                        ReaderName = list[0].ReaderName;
                    }
                    else
                    {
                        ContentFile += "Не найдены ридеры!";
                    }
                }

                if (manager.OfType <ISCard>().Select(s => s.ReaderName).ToList().Contains(ReaderName))
                {
                    //Получение объекта ридера
                    ISCard card = manager[ReaderName];
                    //Создание объекта для работы с картой полиса ОМС
                    PolicySmartcardBase policy = new PolicySmartcardBase(card);
                    //Подключение к карте полиса ОМС
                    policy.Connect();
                    //Чтение информации о владельце полиса ОМС
                    OwnerInformation owner_info = policy.GetOwnerInformation();
                    if (owner_info != null)
                    {
                        printf("Информация о владельце:");
                        printf("{0} = {1}", "Фамилия".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.Identity_1, "Отсутствует"));
                        printf("{0} = {1}", "Имя".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.Identity_2, "Отсутствует"));
                        printf("{0} = {1}", "Отчество".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.Identity_3, "Отсутствует"));
                        printf("{0} = {1}", "Пол".PadRight(35, ' '), owner_info.Sex == 1 ? "Мужской" : owner_info.Sex == 2 ? "Женский" : "Неизвестно");
                        printf("{0} = {1}", "Дата рождения".PadRight(35, ' '), MainForm.FormatPolicyDate(owner_info.BirthDate, "Отсутствует"));
                        printf("{0} = {1}", "Место рождения".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.BirthPlace, "Отсутствует"));

                        if (owner_info.Citizenship != null)
                        {
                            printf("Гражданство:");
                            printf("{0} = {1}", "Код страны".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.Citizenship.CoutryCode, "Отсутствует"));
                            printf("{0} = {1}", "Кириллическое название".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.Citizenship.CoutryCyrillicName, "Отсутствует"));
                        }
                        else
                        {
                            printf("{0} = {1}", "Гражданство".PadRight(35, ' '), "Отсутствует");
                        }

                        printf("Информация о полисе:");
                        printf("{0} = {1:D16}", "Номер полиса".PadRight(35, ' '), owner_info.PolicyNumber);
                        printf("{0} = {1}", "Дата выпуска".PadRight(35, ' '), MainForm.FormatPolicyDate(owner_info.ExpireDate, "Отсутствует"));
                        printf("{0} = {1}", "Срок действия".PadRight(35, ' '), MainForm.FormatPolicyDate(owner_info.ExpireDate, "Не ограничено"));
                        printf("{0} = {1}", "СНИЛС".PadRight(35, ' '), MainForm.FormatPolicyText(owner_info.SNILS, "Отсутствует"));
                        //printf("Чтение атрибутов безопасности карты полиса ОМС");
                        //SecurityInformation SOD = policy.GetSecurityInformation();
                        //printf("{0} = {1}", "Статус ЭЦП".PadRight(35, ' '), owner_info.VerifyEDS(SOD) ? "Верна" : "Неверна");
                    }
                    else
                    {
                        printf("Данные о владельце отсутствуют на карте!");
                    }

                    SMOInformation smo = policy.GetCurrentSMOInformation();
                    if (smo != null)
                    {
                        printf("Данные страхового приложения:");
                        printf("{0} = {1}", "ОГРН".PadRight(35, ' '), smo.OGRN);
                        printf("{0} = {1}", "ОКАТО".PadRight(35, ' '), smo.OKATO);
                        printf("{0} = {1}", "Дата начала страхования".PadRight(35, ' '), MainForm.FormatPolicyDate(smo.InsuranceStartDate, "Отсутствует"));
                        printf("{0} = {1}", "Окончание срока действия".PadRight(35, ' '), MainForm.FormatPolicyDate(smo.InsuranceExpireDate, "Не ограничено"));
                        if (smo.EDS != null)
                        {
                            printf("Данные ЭЦП");
                            printf("{0} = {1}", "Сертификат".PadRight(35, ' '), new X509Certificate2(smo.EDS.Certificate).Subject);
                            printf("{0} = {1}", "ЭЦП".PadRight(35, ' '), smo.EDS.Signature.ToHexString());
                            //printf("{0} = {1}", "Статус ЭЦП".PadRight(35, ' '), smo.VerifyEDS() == true ? "Верна" : "Неверна");
                        }
                        else
                        {
                            printf("{0} = {1}", "Данные ЭЦП".PadRight(35, ' '), "Отсутствуют");
                        }
                    }
                    else
                    {
                        printf("Данные о смо отсутствуют на карте!");
                    }

                    CardID cid = policy.GetCardID();
                    ICCID  ccd = policy.GetICCD();
                    if (cid != null)
                    {
                        printf("Идентификационные данные карты:");
                        printf("{0} = {1}", "Серийный номер карты".PadRight(35, ' '), cid.SerialNumber.ToHexString());
                        printf("{0} = {1}", "Тип карты".PadRight(35, ' '), cid.CardType);
                        printf("{0} = {1}", "Версия".PadRight(35, ' '), cid.CardVersion);
                        printf("{0} = {1}", "Идентификатор учреждения".PadRight(35, ' '), cid.InstitutionID.ToHexString());
                        printf("{0} = {1}", "Дополнительные сведения о карте".PadRight(35, ' '), cid.AdditionalInfo.ToHexString());
                    }
                    else
                    {
                        printf("Идентификационные данные отсутствуют на карте!");
                    }

                    if (ccd != null)
                    {
                        printf("Информация о микросхеме от производителя:");
                        printf("{0} = {1}", "Код производителя карты".PadRight(35, ' '), ccd.IssuerCode);
                        printf("{0} = {1}", "Данные производителя карты".PadRight(35, ' '), ccd.IssuerData.ToHexString());
                    }
                    else
                    {
                        printf("Информация о микросхеме от производителя отсутствует на карте!");
                    }
                    //Отключение от карты полиса ОМС
                    policy.Disconnect();
                    //Отключение от смарт-карт API
                    manager.ReleaseContext();
                }
                else
                {
                    printf("Устройство чтения смарт-карт с именем [{0}] не найдено в системе.");
                    manager.ReleaseContext();
                }
            }
            catch (Exception exception)
            {
                ContentFile += "Ошибка получения списка ридеров: " + exception.Message;
            }

            StreamWriter wf;

            wf = new StreamWriter("infofile.txt", false, Encoding.GetEncoding(1251));
            wf.Write(ContentFile);
            wf.Close();
        }