Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CertDeleteCertificateFromStore не удаляет, сертификат из хранилища 
V
    Опции темы
achepkunov
Дата 24.10.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.12.2006

Репутация: нет
Всего: 1



Здравствуйте, уважаемые!

Понадобилось удалять сертификат  из системного хранилища. На MSDN Нашел замечательный пример, Хранилище открывается, сертификаты перебираются, но при попытке удалить сертификат пишет что доступ запрещен (Программа из примера так не пишет, ;) но если подглядеть GetLastError после  CertDeleteCertificateFromStore, то код ошибки 80070005)

Код


hStoreHandle = CertOpenSystemStore(
     NULL,     
     "ROOT")

while(pCertContext= CertEnumCertificatesInStore(
    hStoreHandle,
    pCertContext))
{

// skip-skip

   if(CertDeleteCertificateFromStore(
     pDupCertContext))   
   {
       printf("The certificate has been deleted. Continue. \n");
   }
   else
   {
      printf("The deletion of the certificate failed.\n");
   }



вот ссылка на пример, если нужно: http://msdn.microsoft.com/en-us/library/aa...v=VS.85%29.aspx


Это сообщение отредактировал(а) achepkunov - 28.10.2011, 11:36
PM MAIL   Вверх
achepkunov
Дата 26.10.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.12.2006

Репутация: нет
Всего: 1



Хе-хе. 

Код

//      The "root" store is treated differently from the other system
//      stores. Before a certificate is added to or deleted from the "root"
//      store, a pop up message box is displayed. The certificate's subject,
//      issuer, serial number, time validity, sha1 and md5 thumbprints are
//      displayed. The user is given the option to do the add or delete.
//      If they don't allow the operation, LastError is set to E_ACCESSDENIED.


Т.е. если приложение консольное, окошко с подтверждением появится не может и система на всякий случай доступ запрещает. :( Жаль. 

Но может можно как-то по хацкерски?
PM MAIL   Вверх
xvr
Дата 27.10.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(achepkunov @  26.10.2011,  14:06 Найти цитируемый пост)
Т.е. если приложение консольное, окошко с подтверждением появится не может

Консольность программы никоим образом не мешает в ней создавать обычные окна, в том числе и pop-up диалоги. Так что видимо что то другое мешает

PM MAIL   Вверх
achepkunov
Дата 28.10.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.12.2006

Репутация: нет
Всего: 1



Точно. Возможно фазы луны :(

В какой-то день видел это вылезающее окно, нажимал Yes сертификат удалялся. Что это было, не пойму, кажется ничего не менял ни до, ни после, но окошко вылезало только один день. Бред какой-то. :( Пробовал на двух машинах.
PM MAIL   Вверх
achepkunov
Дата 8.11.2011, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 13.12.2006

Репутация: нет
Всего: 1



вернулся к вопросу и все решил smile

Первая (закомментированная) функция почему-то открывает хранилище как r/o, вторая - дает удалять

Код

/*    if ( !(hStoreHandle = CertOpenSystemStore(
         NULL,     
         StoreName)))
*/
if(!(hStoreHandle = CertOpenStore(
   CERT_STORE_PROV_SYSTEM_A,        // The store provider type
   0,                               // The encoding type is not needed
   NULL,                            // Use the default HCRYPTPROV
   CERT_SYSTEM_STORE_LOCAL_MACHINE, // Set the store location in a
                                    // registry location
   StoreName                        // The store name 
   ))
  )    
/**/

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0730 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.