|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Сертификаты компьютера |
|
[решено] Сертификаты компьютера
|
Пользователь Сообщения: 144 |
Профиль | Отправить PM | Цитировать Добрый день!
Кто-знает как посмотреть сертификаты компьютера через autoit? Нужно получать S/N и контейнер сертификата. Аналог кода на powershell: |
|
Отправлено: 12:24, 19-12-2016 |
Новый участник Сообщения: 38
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Последний раз редактировалось Creat0R, 20-12-2016 в 09:34. Отправлено: 09:20, 20-12-2016 | #3 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:02, 20-12-2016 | #4 |
Новый участник Сообщения: 38
|
Профиль | Отправить 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 .... |
|
Отправлено: 11:42, 20-12-2016 | #5 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
------- Отправлено: 14:13, 20-12-2016 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|