Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.037 c
1-1105369834
DK
2005-01-10 18:10
2005.01.23
Как остановить выполнение метода


14-1105115662
xman
2005-01-07 19:34
2005.01.23
Сеть не видит сеть


1-1105265978
Федюлин Григорий
2005-01-09 13:19
2005.01.23
Сохранение ListView


1-1105285350
romich7
2005-01-09 18:42
2005.01.23
Как симмулировать нажатие клавиши?=(


6-1099866500
Роман
2004-11-08 01:28
2005.01.23
Запуск времени Интернета





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский