Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: Список КриптоПровайдеров на VBScript Добавлено: 10.11.06 13:49  

Автор вопроса:  Andremon
Здравствуйте!

Мне нужно получить на VBScript список крипто-провайдеров, установленных в системе.

В CryptoApi есть функция: СryptEnumProviders
и пример ее использования в С/С++
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/cryptenumproviders.asp
и еще здесь:
http://www.rsdn.ru/article/crypto/usingcryptoapi.xml


DWORD dwIndex=0;
DWORD dwType;
DWORD cbName;
LPTSTR pszName;

while (CryptEnumProviders(dwIndex, NULL, 0, &dwType, NULL, &cbName))
{
  if (!cbName)
    break;
   
  if (!(pszName = (LPTSTR)LocalAlloc(LMEM_ZEROINIT, cbName)))
    return;
  
  if (!CryptEnumProviders(dwIndex++, NULL, 0, &dwType, pszName, &cbName))
  {
    Error("CryptEnumProviders");
    return;
  }
  
  std::cout<<"--------------------------------"<<std::endl;
  std::cout<<"Provider name: "<<pszName<<std::endl;
  std::cout<<"Provider type: "<<dwType<<std::endl;
  
  LocalFree(pszName);
}


Очень прошу мне помочь или подсказать, как реализовать этот же код на VBScript.
Средствами COPICOM сделать это мне не представляется возможным - не нахожу соответствующего объекта.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 10.11.06 17:57
С чем проблема? С выделением памяти? Попробуй просто использовать в качестве буфера пробельную строку, т.е. вместо LocalAlloc напиши s = space(cbName) или типа того

Ответить

Номер ответа: 2
Автор ответа:
 Andremon



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 10.11.06 18:01
Нет, проблема не с этим. Проблема в том: как вообще эту функцию вызывать из VBScript??

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 10.11.06 18:08
Что-то типа такого, если на VB6
Private Declare Function CryptEnumProviders Lib "advapi32.dll" Alias "CryptEnumProvidersA" (ByVal dwIndex As Long, ByRef pdwReserved As Long, ByVal dwFlags As Long, ByRef pdwProvType As Long, ByVal pszProvName As String, ByRef pcbProvName As Long) As Long

Private Sub Command1_Click()
    ;Dim index As Long, l As Long, t As Long
    index = 0
    l = 0
    ;Dim s As String
    ;Do While CryptEnumProviders(index, ByVal 0&, ByVal 0&, t, s, l)
        s = Space(l)
        CryptEnumProviders index, ByVal 0&, ByVal 0&, t, s, l
        Text1 = Text1 & s
        l = 0
        index = index + 1
    Loop
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Andremon



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 10.11.06 18:11
Спасибо, но конструкция
Private Declare Function CryptEnumProviders Lib "advapi32.dll" Alias "CryptEnumProvidersA" (ByVal dwIndex As Long, ByRef pdwReserved As Long, ByVal dwFlags As Long, ByRef pdwProvType As Long, ByVal pszProvName As String, ByRef pcbProvName As Long) As Long

Не работает в VBScript

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 10.11.06 21:06
:))) действительно чего ж та "конструкиця" может неработать в VBS? :) Ну коль не работает опусти ту конструкцию нафиг :)

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 10.11.06 21:48
Чистым VBScript проблему не решить

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 11.11.06 01:03
Но как правильно заметил Andremon, список криптоПровайдеров сидит в реестре :)

поэтому выход выкинуть СryptEnumProviders, и юзать WScript...

Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell";)

WSHShell.RegRead...

ну итп :)...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам