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

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


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

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


Цитата MKN:
А почему тогда не работают прочие WMI определения в том коде ? »
потому что, возвращаемое значения разными бывают (тип строка, число, булево значение и т.д)
поэтому скрипт нужно дотачивать до нужных типов (определить точно, какой тип переменных тебе надо возвратить) т.е какие тебе нужны в итоге.
Скрипт заточен под серийник биоса, и тип возвращаемой переменной Variant
Скрытый текст
Код: Выделить весь код
       System::Call "$3->20(w 'WQL', w 'Select SerialNumber from Win32_BIOS', \\ 
        ${WBEM_FLAG_FORWARD_ONLY} | ${WBEM_FLAG_RETURN_IMMEDIATELY}, \\ 
        i 0, *i .r4) i.r1" 
--
--
             ${If} $6 > 0 
                 ; Variant 
                 ; (unsigned short vt, WORD wReserved1,  
                 ;  WORD wReserved2, WORD wReserved3, BSTR bstrVal) 
                 ; Allocate memory for Variant 
                 System::Call "*(i 0, i 0, i 0) i.r7" 
                 ; Call IWbemClassObject->Get 
                 System::Call "$5->4(w 'SerialNumber', i 0, i r7, i 0, i 0) i.r1" 
                 ${If} $1 < 0 
                    StrCpy $0 "failed to get: $1" 
                 ${Else}  
                    ; Access bstrVal from Variant 
                    System::Call "*$7(i, i, w .r0)" 
                    System::Call "ole32::VariantClear(i r7)" 
                 ${EndIf} 
                 ; Free memory associated with Variant 
                 System::Free $7 
             ${Else} 
                 StrCpy $0 "failed: no items ***91;$6***93;" 
             ${EndIf}

переделывать скрипт не имеет смысла.

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Отправлено: 17:05, 19-08-2015 | #1767