|
dll для определения серийников железа
|
|||
---|---|---|---|
#18+
Господа, не поможет ли кто с dll-кой, которая бы в fox возвращала строку серийников или других характеристик процессора, мамы, видео, сетевухи, и т.д. и т.п... На повестке дня избитая тема привязки к железу конкретного компа для защиты от несанкционированного копирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 01:38 |
|
dll для определения серийников железа
|
|||
---|---|---|---|
#18+
Недавно обсуждалось в форуме FoxClub. Если мама оригинальная, не китайская можете использовать ее серийный номер, который можно получить через WMI. VFP отлично работает с WMI. Подходит для систем выше 98/Millenium Никогда не говори "невозможно", просто попробуй сделать иначе! JS (at FoxClub) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 02:44 |
|
dll для определения серийников железа
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин, баш на баш)))) про мать и проц 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:05 |
|
dll для определения серийников железа
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин, вот еще про проц 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:06 |
|
dll для определения серийников железа
|
|||
---|---|---|---|
#18+
JurisfoxНедавно обсуждалось в форуме FoxClub. Если мама оригинальная, не китайская можете использовать ее серийный номер, который можно получить через WMI. Оооо, а я тут Ваш сайт только что вспоминал в споре по TreeView. johngornВалентин Н.Карелин, баш на баш)))) ))))) А от меня то какой баш требуется? )))) Что я теперь должен )))) Ладно, спасибо за помощь, друзья... Разбираться уже с утра буду... Наверняка вопросы появятся... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:37 |
|
dll для определения серийников железа
|
|||
---|---|---|---|
#18+
Валентин Н.Карелин))))) А от меня то какой баш требуется? )))) Что я теперь должен )))) Аааа, всё понял... Про Grid и формат числа в отчёте... Теперь я туплю.... Всё.... спать... спать... спать... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2008, 03:42 |
|
|
start [/forum/topic.php?desktop=1&fid=41&tid=1587080]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 346ms |
total: | 502ms |
0 / 0 |