Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Serial   Найти похожие ветки 

 
Bobby Digital ©   (2004-12-04 01:11) [0]

как получить серийник винта (програмно разумеется :))


 
GanibalLector ©   (2004-12-04 01:14) [1]

VolumeName,
FileSystemName     : array [0..MAX_PATH-1] of Char;
VolumeSerialNo     : DWord;
MaxComponentLength,
FileSystemFlags    : DWord;
...
GetVolumeInformation("c:\",VolumeName,MAX_PATH,@VolumeSerialNo,
MaxComponentLength,FileSystemFlags,
FileSystemName,MAX_PATH);


 
GanibalLector ©   (2004-12-04 01:15) [2]

но это не серийник!


 
Bobby Digital ©   (2004-12-04 01:35) [3]

а ты не знаешь как код виндовса получить?


 
vidiv ©   (2004-12-04 01:42) [4]


> Bobby Digital ©   (04.12.04 01:35) [3]

при покупке на желтой наклейне должен быть


 
Bobby Digital ©   (2004-12-04 01:48) [5]

:) ... я имею ввдеу програмно вернуть код винды ... и к тому же покажите мне того чела котрый купит лиценз винду за 400 гривен, если на базаре ее можно купить за 15 грн.?


 
GanibalLector ©   (2004-12-04 01:50) [6]

2 Bobby Digital
Я купил на 6 компом.И что с того?


 
Bobby Digital ©   (2004-12-04 01:56) [7]

да не нече бабки просто спали а так нече старшного, хотя если комп не домашний а на предприятии то лицензя нужна иначе Налоговая научит Билли Гейтса любить


 
Bobby Digital ©   (2004-12-04 01:59) [8]

Кста ... Ганибал привет земляк !!! :) Я тож с Харькова


 
GanibalLector ©   (2004-12-04 02:01) [9]

> на предприятии то лицензя нужна
Дык туда и покупал


 
Alex Konshin ©   (2004-12-04 03:02) [10]

http://home.earthlink.net/~akonshin/index.htm


 
grigory ©   (2004-12-04 10:31) [11]

Серийник винта получить можно!вполне реальная задача..если еще надо..пиши, я покажу!


 
Bobby Digital ©   (2004-12-04 11:26) [12]


> grigory ©

конечно пиши ... !! Жду


 
grigory ©   (2004-12-04 11:36) [13]

:)) лучше на мыло, а то там такой проект!! я скинул..не знаю то или нет..но серийник есть..и диска и партиций!


 
Shama_n ©   (2004-12-04 17:45) [14]

да не нече бабки просто спали а так нече старшного, хотя если комп не домашний а на предприятии то лицензя нужна иначе Налоговая научит Билли Гейтса любить
С каких это пор налоговая занимается вопросами нарушения авторского права?


 
Cardinal ©   (2004-12-04 17:59) [15]

Код не мой

function GetIdeDiskSerialNumber( ControllerNumber, DriveNumber : Integer ) : String;
type
TSrbIoControl = packed record
  HeaderLength : ULONG;
  Signature    : Array[0..7] of Char;
  Timeout      : ULONG;
  ControlCode  : ULONG;
  ReturnCode   : ULONG;
  Length       : ULONG;
end;
SRB_IO_CONTROL = TSrbIoControl;
PSrbIoControl = ^TSrbIoControl;

TIDERegs = packed record
  bFeaturesReg     : Byte; // Used for specifying SMART "commands".
  bSectorCountReg  : Byte; // IDE sector count register
  bSectorNumberReg : Byte; // IDE sector number register
  bCylLowReg       : Byte; // IDE low order cylinder value
  bCylHighReg      : Byte; // IDE high order cylinder value
  bDriveHeadReg    : Byte; // IDE drive/head register
  bCommandReg      : Byte; // Actual IDE command.
  bReserved        : Byte; // reserved for future use.  Must be zero.
end;
IDEREGS   = TIDERegs;
PIDERegs  = ^TIDERegs;

TSendCmdInParams = packed record
  cBufferSize  : DWORD;                // Buffer size in bytes
  irDriveRegs  : TIDERegs;             // Structure with drive register values.
  bDriveNumber : Byte;                 // Physical drive number to send command to (0,1,2,3).
  bReserved    : Array[0..2] of Byte;  // Reserved for future expansion.
  dwReserved   : Array[0..3] of DWORD; // For future use.
  bBuffer      : Array[0..0] of Byte;  // Input buffer.
end;
SENDCMDINPARAMS   = TSendCmdInParams;
PSendCmdInParams  = ^TSendCmdInParams;

TIdSector = packed record
  wGenConfig                 : Word;
  wNumCyls                   : Word;
  wReserved                  : Word;
  wNumHeads                  : Word;
  wBytesPerTrack             : Word;
  wBytesPerSector            : Word;
  wSectorsPerTrack           : Word;
  wVendorUnique              : Array[0..2] of Word;
  sSerialNumber              : Array[0..19] of Char;
  wBufferType                : Word;
  wBufferSize                : Word;
  wECCSize                   : Word;
  sFirmwareRev               : Array[0..7] of Char;
  sModelNumber               : Array[0..39] of Char;
  wMoreVendorUnique          : Word;
  wDoubleWordIO              : Word;
  wCapabilities              : Word;
  wReserved1                 : Word;
  wPIOTiming                 : Word;
  wDMATiming                 : Word;
  wBS                        : Word;
  wNumCurrentCyls            : Word;
  wNumCurrentHeads           : Word;
  wNumCurrentSectorsPerTrack : Word;
  ulCurrentSectorCapacity    : ULONG;
  wMultSectorStuff           : Word;
  ulTotalAddressableSectors  : ULONG;
  wSingleWordDMA             : Word;
  wMultiWordDMA              : Word;
  bReserved                  : Array[0..127] of Byte;
end;
PIdSector = ^TIdSector;

const
IDE_ID_FUNCTION = $EC;
IDENTIFY_BUFFER_SIZE       = 512;
DFP_RECEIVE_DRIVE_DATA        = $0007c088;
IOCTL_SCSI_MINIPORT           = $0004d008;
IOCTL_SCSI_MINIPORT_IDENTIFY  = $001b0501;
DataSize = sizeof(TSendCmdInParams)-1+IDENTIFY_BUFFER_SIZE;
BufferSize = SizeOf(SRB_IO_CONTROL)+DataSize;
W9xBufferSize = IDENTIFY_BUFFER_SIZE+16;
var
hDevice : THandle;
cbBytesReturned : DWORD;
s : String;
pInData : PSendCmdInParams;
pOutData : Pointer; // PSendCmdInParams;
Buffer : Array[0..BufferSize-1] of Byte;
srbControl : TSrbIoControl absolute Buffer;

procedure ChangeByteOrder( var Data; Size : Integer );
var ptr : PChar;
    i : Integer;
    c : Char;
begin
  ptr := @Data;
  for i := 0 to (Size shr 1)-1 do
  begin
    c := ptr^;
    ptr^ := (ptr+1)^;
    (ptr+1)^ := c;
    Inc(ptr,2);
  end;
end;

begin
Result := "";
FillChar(Buffer,BufferSize,#0);
if Win32Platform=VER_PLATFORM_WIN32_NT then
  begin // Windows NT, Windows 2000
    Str(ControllerNumber,s);
    // Get SCSI port handle
    hDevice := CreateFile(
      PChar("\\.\Scsi"+s+":"),
      GENERIC_READ or GENERIC_WRITE,
      FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 );
    if hDevice=INVALID_HANDLE_VALUE then RaiseLastOSError;
    try
      srbControl.HeaderLength := SizeOf(SRB_IO_CONTROL);
      System.Move("SCSIDISK",srbControl.Signature,8);
      srbControl.Timeout      := 2;
      srbControl.Length       := DataSize;
      srbControl.ControlCode  := IOCTL_SCSI_MINIPORT_IDENTIFY;
      pInData := PSendCmdInParams(PChar(@Buffer)+SizeOf(SRB_IO_CONTROL));
      pOutData := pInData;
      with pInData^ do
      begin
        cBufferSize  := IDENTIFY_BUFFER_SIZE;
        bDriveNumber := DriveNumber;
        with irDriveRegs do
        begin
          bFeaturesReg     := 0;
          bSectorCountReg  := 1;
          bSectorNumberReg := 1;
          bCylLowReg       := 0;
          bCylHighReg      := 0;
          bDriveHeadReg    := $A0 or ((DriveNumber and 1) shl 4);
          bCommandReg      := IDE_ID_FUNCTION;
        end;
      end;
      if not DeviceIoControl( hDevice, IOCTL_SCSI_MINIPORT, @Buffer, BufferSize, @Buffer, BufferSize, cbBytesReturned, nil ) then RaiseLastOSError;
    finally
      CloseHandle(hDevice);
    end;
  end
else
  begin // Windows 95 OSR2, Windows 98
    hDevice := CreateFile( "\\.\SMARTVSD", 0, 0, nil, CREATE_NEW, 0, 0 );
    if hDevice=INVALID_HANDLE_VALUE then RaiseLastOSError;
    try
      pInData := PSendCmdInParams(@Buffer);
      pOutData := PChar(@pInData^.bBuffer);
      with pInData^ do
      begin
        cBufferSize  := IDENTIFY_BUFFER_SIZE;
        bDriveNumber := DriveNumber;
        with irDriveRegs do
        begin
          bFeaturesReg     := 0;
          bSectorCountReg  := 1;
          bSectorNumberReg := 1;
          bCylLowReg       := 0;
          bCylHighReg      := 0;
          bDriveHeadReg    := $A0 or ((DriveNumber and 1) shl 4);
          bCommandReg      := IDE_ID_FUNCTION;
        end;
      end;
      if not DeviceIoControl( hDevice, DFP_RECEIVE_DRIVE_DATA, pInData, SizeOf(TSendCmdInParams)-1, pOutData, W9xBufferSize, cbBytesReturned, nil ) then RaiseLastOSError;
    finally
      CloseHandle(hDevice);
    end;
  end;

with PIdSector(PChar(pOutData)+16)^ do
begin
  ChangeByteOrder(sSerialNumber,SizeOf(sSerialNumber));
  SetString(Result,sSerialNumber,SizeOf(sSerialNumber));
end;

Result := Trim(Result);

end;


 
Alex Konshin ©   (2004-12-04 23:44) [16]

Не буду говорить чей...
Вы все-таки сходите на мой сайт.


 
Xaker ©   (2004-12-04 23:56) [17]

Alex Konshin ©   (04.12.04 23:44) [16]
инфа на сайте супер :))
спасибо :))))))))))))))



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.037 c
4-1100617539
grigory
2004-11-16 18:05
2005.01.23
чтение FAT


3-1103611773
alex145
2004-12-21 09:49
2005.01.23
Как импортировать dbf-таблицы


1-1105254241
XAdmin
2005-01-09 10:04
2005.01.23
GetCurrentRecord(PChar), обратное преобразование


4-1102053755
Rext
2004-12-03 09:02
2005.01.23
Получение списка запущенных прочессов


10-1081195735
ivan
2004-04-06 00:08
2005.01.23
ActiveX control