Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / dll для определения серийников железа / 7 сообщений из 7, страница 1 из 1
13.11.2008, 01:38
    #35650504
Валентин Н.Карелин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
Господа, не поможет ли кто с dll-кой, которая бы в fox возвращала строку серийников или других характеристик процессора, мамы, видео, сетевухи, и т.д. и т.п... На повестке дня избитая тема привязки к железу конкретного компа для защиты от несанкционированного копирования.
...
Рейтинг: 0 / 0
13.11.2008, 02:44
    #35650527
Jurisfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
Недавно обсуждалось в форуме FoxClub. Если мама оригинальная,
не китайская можете использовать ее серийный номер,
который можно получить через WMI. VFP отлично работает с WMI.
Подходит для систем выше 98/Millenium

Никогда не говори "невозможно", просто попробуй сделать иначе!
JS (at FoxClub)
...
Рейтинг: 0 / 0
13.11.2008, 03:05
    #35650531
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
Валентин Н.Карелин, баш на баш))))

про мать и проц

LOCAL lcRemoteComputer,;
loSWbemLocator, loSWbemServices,lcolSWbemObjectSet,loSWbemObject
lcRemoteComputer = "."

lcComputer="."
loSWbemServices = GetObject("winmgmts:\\" + lcComputer + "\root\cimv2")

* Мать

lcolSWbemObjectSet = loSWbemServices.InstancesOf("Win32_BaseBoard")
For Each loSWbemObject In lcolSWbemObjectSet
? loSWbemObject.Caption,;
loSWbemObject.Manufacturer,;
loSWbemObject.Model,;
loSWbemObject.OtherIdentifyingInfo,;
loSWbemObject.PartNumber,;
loSWbemObject.Product,;
loSWbemObject.SerialNumber,;
loSWbemObject.SKU,;
loSWbemObject.Version

Next

* Проц

lcolSWbemObjectSet = loSWbemServices.InstancesOf("Win32_Processor")
For Each loSWbemObject In lcolSWbemObjectSet
? loSWbemObject.Caption,;
loSWbemObject.Architecture,;
loSWbemObject.CPUStatus,;
loSWbemObject.Manufacturer,;
loSWbemObject.ProcessorID,;
loSWbemObject.UniqueID,;
loSWbemObject.Version
Next



а вот про винт

DECLARE INTEGER CloseHandle IN kernel32 ;
INTEGER hObject

DECLARE INTEGER CreateFile IN kernel32 ;
STRING lpFileName,;
INTEGER dwDesiredAccess,;
INTEGER dwShareMode,;
INTEGER lpSecurityAttributes,;
INTEGER dwCreationDisposition,;
INTEGER dwFlagsAndAttributes,;
INTEGER hTemplateFile

DECLARE INTEGER DeviceIoControl IN kernel32 ;
INTEGER hDevice,;
INTEGER dwIoControlCode,;
STRING @lpInBuffer,;
LONG nInBufferSize,;
STRING @lpOutBuffer,;
LONG nOutBufferSize,;
INTEGER @lpBytesReturned,;
INTEGER lpOverlapped

DECLARE INTEGER GetLogicalDriveStrings IN Win32API ;
INTEGER buflen,;
STRING @buf
DECLARE INTEGER GetDriveType IN Win32API STRING cpath
DECLARE INTEGER GetVolumeInformation IN Win32API ;
STRING lpRootPathName,;
STRING @lpVolumeNameBuffer,;
INTEGER nVolumeNameSize,;
LONG @lpVolumeSerialNumber,;
INTEGER @lpMaximumComponentLength,;
INTEGER @lpFileSystemFlags,;
STRING @lpFileSystemNameBuffer,;
INTEGER nFileSystemNameSize

LOCAL m.buflen, m.buf
m.buflen = 104
m.buf = REPLICATE(CHR(0), m.buflen)
GetLogicalDriveStrings(m.buflen, @m.buf)
m.buf = CHRTRAN(m.buf, CHR(0) + "\:","")
m.str1 = ""
FOR m.i=1 TO LEN(m.buf)
m.drvtype = GetDriveType(SUBSTR(m.buf, m.i, 1) + ":\")
IF m.drvtype = 3
m.str1 = m.str1 + SUBSTR(m.buf, m.i, 1)
ENDIF
NEXT

FOR m.i = 1 TO LEN(m.str1)
m.vnb = REPLICATE(CHR(0),64)
m.vnbs = 64
m.vsn = 0
m.mcl = 0
m.fsf = 0
m.fsnb = REPLICATE(CHR(0),10)
m.fsnbs = 10

GetVolumeInformation(SUBSTR(m.str1,m.i,1) + ":\", @m.vnb, m.vnbs,;
@m.vsn, @m.mcl, @m.fsf, @m.fsnb, m.fsnbs)
IF m.vsn < 0
m.vsn = m.vsn + 168
ENDIF
m.vsn = PADL(ALLTRIM(SUBSTR(TRANSFORM(m.vsn,"@0"), 3)), 8, "0")
m.drivenumber = ASC(SUBSTR(m.str1, m.i, 1)) - ASC("C")
handle = CreateFile("\\.\" + CHR(ASC("c") + m.drivenumber) + ":",;
0xC0000000, 3, 0, 3, 0, 0)
m.sn = ""
m.mod = ""
m.rev = ""
IF handle <> -1
m.sci =""
m.sci = m.sci + CHR(0) + CHR(2) + CHR(0) + CHR(0)
m.sci = m.sci + CHR(0)
m.sci = m.sci + CHR(1)
m.sci = m.sci + CHR(1)
m.sci = m.sci + CHR(0)
m.sci = m.sci + CHR(0)
m.sci = m.sci + CHR(0xA0)
m.sci = m.sci + CHR(0xEC)
m.sci = m.sci + CHR(0)
m.sci = m.sci + CHR(0)
m.sci = m.sci + REPLICATE(CHR(0), 499)
m.sco = REPLICATE(CHR(0), 2048)
m.ret_buffersize = 0
m.otv=DeviceIoControl( handle,;
0x7C088,;
@m.sci,;
LEN(sci),;
@m.sco,;
LEN(sco),;
@m.ret_buffersize,;
0;
)
CloseHandle(handle)
IF m.otv <> 0
m.sn = CHRTRAN( ALLTRIM( conv21( SUBSTR(m.sco, 37, 20) ) ),;
CHR(0), "")
m.rev = CHRTRAN( ALLTRIM( conv21( SUBSTR(m.sco, 63, 8) ) ),;
CHR(0), "")
m.mod = CHRTRAN( ALLTRIM( conv21( SUBSTR(m.sco, 71, 40) ) ),;
CHR(0), "")
ENDIF
ENDIF
IF EMPTY(m.sn)
handle = CreateFile("\\.\" + CHR(ASC("c") + m.drivenumber) +;
":", 0x00000000, 3,0, 3, 0, 0)
IF handle <> -1
m.sn = ""
m.mod = ""
m.rev = ""
m.sci = REPLICATE(CHR(0),1024)
m.sco = REPLICATE(CHR(0),1024)
m.ret_buffersize = 0
m.otv = DeviceIoControl( handle,;
0x2D1400,;
@m.sci,;
LEN(sci),;
@m.sco,;
LEN(sco),;
@m.ret_buffersize,;
0;
)
CloseHandle(handle)
IF m.otv <> 0
m.pos0 = ASC(SUBSTR(m.sco,13,1))
m.pos1 = ASC(SUBSTR(m.sco,17,1))
IF m.pos0 > 0
m.pos1 = m.pos0
ENDIF
m.pos2 = ASC(SUBSTR(m.sco, 21, 1))
m.pos3 = ASC(SUBSTR(m.sco, 25, 1))
m.mod = SUBSTR(m.sco, m.pos1+1, m.pos2 - m.pos1)
m.pos4 = AT(CHR(0), m.mod)
IF m.pos4 > 0
m.mod = ALLTRIM(CHRTRAN(m.mod, CHR(0), ""))
ENDIF
IF m.pos3 > m.pos2
m.rev = SUBSTR(m.sco, m.pos2+1, m.pos3 - m.pos2)
ELSE
m.rev = SUBSTR(m.sco, m.pos2+1)
ENDIF
m.pos4 = AT(CHR(0), m.rev)
IF m.pos4 > 0
m.rev = ALLTRIM(LEFT(m.rev, m.pos4 - 1))
ENDIF
IF m.pos3 > 0
m.pos3 = m.pos3 + 1
m.sco1 = SUBSTR(m.sco, m.pos3, 40)
m.sco1 = ALLTRIM(m.sco1)
m.sn = ""
m.pos3 = 1
FOR m.j = 1 TO 20
m.ch1 = CHR(EVALUATE("0x" +;
ALLTRIM(SUBSTR(m.sco1, m.pos3, 2))))
m.pos3 = m.pos3 + 2
m.ch2 = CHR(EVALUATE("0x" +;
ALLTRIM(SUBSTR(m.sco1, m.pos3, 2))))
m.pos3 = m.pos3 + 2
m.sn = m.sn + m.ch2 + m.ch1
ENDFOR
m.sn = ALLTRIM(CHRTRAN(m.sn, CHR(0), ""))
ELSE
m.sn = ""
ENDIF
ENDIF
ENDIF
ENDIF
?SUBSTR(m.str1, m.i, 1) + ":\ VolSN: " + m.vsn + " " +;
CHRTRAN(m.fsnb, CHR(0), "") + "Model: " + m.mod + " Revision: " + m.rev;
+ " Serial: " + m.sn
ENDFOR

*/===============================================
FUNCTION conv21
*/===============================================
LPARAMETERS m.str
IF LEN(m.str)%2 = 1
m.str = m.str + " "
ENDIF
LOCAL m.i, m.str2
m.str2 = ""
FOR m.i=1 TO LEN(m.str)
m.str2 = m.str2 + SUBSTR(m.str, m.i + IIF(m.i%2=0, -1, 1), 1)
ENDFOR
RETURN m.str2
...
Рейтинг: 0 / 0
13.11.2008, 03:06
    #35650532
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
Валентин Н.Карелин, вот еще про проц
LOCAL lcComputer, loWMIService,loItemCollection
lcComputer = "."
loWMIService = GetObject("winmgmts:\\" + lcComputer + "\root\cimv2")
loItemCollection = loWMIService.ExecQuery("SELECT * FROM Win32_Processor",,48)
For Each loItem in loItemCollection
? "ProcessorId: " + loItem.ProcessorId
Next
...
Рейтинг: 0 / 0
13.11.2008, 03:37
    #35650538
Валентин Н.Карелин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
JurisfoxНедавно обсуждалось в форуме FoxClub. Если мама оригинальная,
не китайская можете использовать ее серийный номер,
который можно получить через WMI.

Оооо, а я тут Ваш сайт только что вспоминал в споре по TreeView.


johngornВалентин Н.Карелин, баш на баш))))

))))) А от меня то какой баш требуется? )))) Что я теперь должен ))))

Ладно, спасибо за помощь, друзья... Разбираться уже с утра буду... Наверняка вопросы появятся...
...
Рейтинг: 0 / 0
13.11.2008, 03:42
    #35650540
Валентин Н.Карелин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
Валентин Н.Карелин))))) А от меня то какой баш требуется? )))) Что я теперь должен ))))

Аааа, всё понял... Про Grid и формат числа в отчёте... Теперь я туплю.... Всё.... спать... спать... спать...
...
Рейтинг: 0 / 0
13.11.2008, 10:39
    #35650952
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dll для определения серийников железа
Валентин Н.Карелин, ок )))))))
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / dll для определения серийников железа / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]