Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Сертификаты компьютера

Ответить
Настройки темы
[решено] Сертификаты компьютера

Пользователь


Сообщения: 144
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!
Кто-знает как посмотреть сертификаты компьютера через autoit?
Нужно получать S/N и контейнер сертификата.

Аналог кода на powershell:
Код: Выделить весь код
$MyCerts = dir Cert:\LocalMachine\My
Foreach($MyCert in $MyCerts)
{
    $MyCert.SerialNumber
    $MyCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName
}

Отправлено: 12:24, 19-12-2016

 

Аватара для Mike909

Новый участник


Сообщения: 38
Благодарности: 14

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include<array.au3>

_ArrayDisplay(_GetCert())  

Func _GetCert()

    $psLine = "$MyCerts = dir Cert:\LocalMachine\My; Foreach($MyCert in $MyCerts) {   $MyCert.SerialNumber;  $MyCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName; }"

   $iPID = Run(@ComSpec & " /c Powershell " & $psLine, "", @SW_HIDE , $stdout_child)

   $sOutput = ""

          While 1
                 $sOutput &= StdoutRead($iPID)
                 If @error Then
                     ExitLoop
                 EndIf
          WEnd

   $aRtn = stringsplit($sOutput , @LF , 2)
   _ArrayDelete($aRtn , ubound($aRtn) - 1)
   If ubound($aRtn) < 1 then _ArrayAdd($aRtn , "No Match Found")
   Return $aRtn

EndFunc

Отправлено: 16:44, 19-12-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <Array.au3>
#include <Date.au3>

Global $oCertStore = ObjCreate('CAPICOM.Store')
$oCertStore.Open(1, 'Root' , 0) ;Change 'Root' to 'my' for user's local machine store
Global $oCerts = $oCertStore.Certificates
Global $aCerts[$oCerts.Count + 1][7] = [[$oCerts.Count, 'IssuerName', 'SerialNumber', 'SubjectName', 'Version', 'ValidFromDate', 'ValidToDate']]
Global $iC = 1

For $oCert In $oCerts
    $aCerts[$iC][1] = $oCert.IssuerName
    $aCerts[$iC][2] = $oCert.SerialNumber
    $aCerts[$iC][3] = $oCert.SubjectName
    $aCerts[$iC][4] = $oCert.Version
    $aCerts[$iC][5] = _DateFormat($oCert.ValidFromDate)
    $aCerts[$iC][6] = _DateFormat($oCert.ValidToDate)

    $iC += 1
Next

_ArrayDisplay($aCerts)

Func _DateFormat($sDate)
    Local $aDate = StringRegExp($sDate, '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)', 3)

    If UBound($aDate) < 6 Then
        Return SetError(1, 0, $sDate)
    EndIf

    Return StringFormat('%02i/%02i/%04i %02i:%02i:%02i', $aDate[2], $aDate[1], $aDate[0], $aDate[3], $aDate[4], $aDate[5])
EndFunc
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Последний раз редактировалось Creat0R, 20-12-2016 в 09:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:20, 20-12-2016 | #3


Пользователь


Сообщения: 144
Благодарности: 0

Профиль | Отправить PM | Цитировать


Странно, но у меня возникает ошибка:
Код: Выделить весь код
C:\TEMP\t6.au3 (5) : ==> Variable must be of type "Object".:
$oCertStore.Open(1, 'My' , 0)
$oCertStore^ ERROR

Отправлено: 11:02, 20-12-2016 | #4


Аватара для Mike909

Новый участник


Сообщения: 38
Благодарности: 14

Профиль | Отправить PM | Цитировать


Добавил получение PrivateKey:

Код: Выделить весь код
....
Global $oCertStore = ObjCreate('CAPICOM.Store')
;1 - CAPICOM_LOCAL_MACHINE_STORE
;2 - CAPICOM_CURRENT_USER_STORE
$oCertStore.Open(1, 'My' , 0) ; Change 'Root' to 'my' for user's local machine store     ; First param: 1-  Local Machine ; 2 - Current User
Local $oCerts = $oCertStore.Certificates
Local $aCerts[$oCerts.Count + 1][8] = [[$oCerts.Count, 'IssuerName', 'SerialNumber', 'SubjectName', 'Version', 'ValidFromDate', 'ValidToDate', 'PrivateKey UniqueContainerName']]
Local $iC = 1
;Local $oPriv = $oCertStore.PrivateKey.UniqueContainerName
For $oCert In $oCerts
    $aCerts[$iC][1] = $oCert.IssuerName
    $aCerts[$iC][2] = $oCert.SerialNumber
    $aCerts[$iC][3] = $oCert.SubjectName
    $aCerts[$iC][4] = $oCert.Version
    $aCerts[$iC][5] = _DateFormat($oCert.ValidFromDate)
    $aCerts[$iC][6] = _DateFormat($oCert.ValidToDate)
    If $oCert.HasPrivateKey() Then
        $aCerts[$iC][7] = $oCert.PrivateKey.UniqueContainerName
    EndIf
    $iC += 1
Next

....
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:42, 20-12-2016 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#include <Array.au3>

Global Const $CAPICOM_LOCAL_MACHINE_STORE = 1
Global Const $CAPICOM_CURRENT_USER_STORE = 2

Global $iOption = $CAPICOM_LOCAL_MACHINE_STORE ;Change only this to one of above options

$aCerts = _Certificates_Get($iOption)

If @error Then
    Exit MsgBox(16, @ScriptName, 'Unable to create CAPICOM.Store object' & @CRLF & @CRLF & ' ==> EXIT')
EndIf

_ArrayDisplay($aCerts)

Func _Certificates_Get($iOption)
    Local Const $sOption = ($iOption = $CAPICOM_CURRENT_USER_STORE ? 'My' : 'Root')

    Local $oCertStore = ObjCreate('CAPICOM.Store')

    If Not IsObj($oCertStore) Then
        Return SetError(1, 0, 0)
    EndIf

    $oCertStore.Open($iOption, $sOption, 0)
    Local $oCerts = $oCertStore.Certificates

    If Not IsObj($oCerts) Then
        Return SetError(2, 0, 0)
    EndIf

    Local $iC = 1
    Local $aCerts[$oCerts.Count + 1][8] = [[$oCerts.Count, 'IssuerName', 'SerialNumber', 'SubjectName', 'Version', 'ValidFromDate', 'ValidToDate', 'PrivateKey UniqueContainerName']]

    For $oCert In $oCerts
        $aCerts[$iC][1] = $oCert.IssuerName
        $aCerts[$iC][2] = $oCert.SerialNumber
        $aCerts[$iC][3] = $oCert.SubjectName
        $aCerts[$iC][4] = $oCert.Version
        $aCerts[$iC][5] = _Certificates_DateFormat($oCert.ValidFromDate)
        $aCerts[$iC][6] = _Certificates_DateFormat($oCert.ValidToDate)

        If $oCert.HasPrivateKey() Then
            $aCerts[$iC][7] = $oCert.PrivateKey.UniqueContainerName
        EndIf

        $iC += 1
    Next

    Return $aCerts
EndFunc

Func _Certificates_DateFormat($sDate)
    Local $aDate = StringRegExp($sDate, '(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)', 3)

    If UBound($aDate) < 6 Then
        Return SetError(1, 0, $sDate)
    EndIf

    Return StringFormat('%02i/%02i/%04i %02i:%02i:%02i', $aDate[2], $aDate[1], $aDate[0], $aDate[3], $aDate[4], $aDate[5])
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:13, 20-12-2016 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Сертификаты компьютера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
V. 2007 - Сертификаты Emaxim Microsoft Exchange Server 2 01-07-2013 11:00
Вопрос - VPN и Сертификаты. mhm Защита компьютерных систем 1 12-04-2013 11:57
Разное - Покосячились сертификаты Danila-GFX Microsoft Windows 2000/XP 1 22-09-2012 18:08
сертификаты URIK-79 Непонятные проблемы с Железом 2 15-05-2012 11:50
V. 2010 - Сертификаты Alex-4u Microsoft Exchange Server 2 17-01-2011 23:53




 
Переход