صفحه 2 از 2 اولاول 12
نمایش نتایج 41 تا 52 از 52

نام تاپیک: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

  1. #41
    کاربر جدید
    تاریخ عضویت
    مهر 1386
    محل زندگی
    اهواز
    پست
    3

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    سلام منم روي ويندوز xp sp3 تست كردم درست بود هاردم هم sata هست

  2. #42
    کاربر تازه وارد آواتار 0armin0
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    ایران
    پست
    43

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    با توجه به اینکه مدتها از تصحیح کدم میگذره و اشکالی گزارش نشده تا 99درصد اطمینان بهش دارم البته تا ویندوز 7 . کسی ویندوز 8 داره تست بگیره ممنون میشم

  3. #43
    کاربر دائمی آواتار gholami146
    تاریخ عضویت
    آبان 1388
    محل زندگی
    مشهد مقدس
    پست
    374

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    با سلام من تو ویندوز XP 32bit تسط کردم درست بود

  4. #44

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    با سلام خدمت دو3تان
    بویژه دوست عزیز
    0armin0

    چندتا سوال داشتم

    آیا این سریال منحصر به فرده؟؟

    با نصب مجدد ویندوز یا فرمت کردن هارد تغییر نمیکنه؟؟

    آیا امکانش هست این برنامه رو به کامپوننت تبدیل کنیم؟؟


    با تشکر

  5. #45

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    آیا این سریال منحصر به فرده؟؟
    بله
    با نصب مجدد ویندوز یا فرمت کردن هارد تغییر نمیکنه؟؟
    خیر، مگر اینکه کاربر برنامه رو در یک ویندوز مجازی اجرا کرده باشه!
    آیا امکانش هست این برنامه رو به کامپوننت تبدیل کنیم؟؟
    به جای این دردسرها از کامپوننت hddinfo استفاده کنید.

  6. #46

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    به جای این دردسرها از کامپوننت hddinfo استفاده کنید.
    این کامپوننت رایگانه؟؟؟

    غیر فعال نمیشه؟

    من فقط میخوام Serial Number هارد رو بدست بیارم چطوری میتونم از این کامپوننت استفاده کنم؟

    بازم ممنون از راهنماییتون

  7. #47

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    دوستان ؟

    من بصورت زیر از این کامپوننت استفاده کردم


    hdd.Method:=TGetInfoMethod(gimAuto);
    HDD.DeviceName:='PhysicalDrive0';
    HDD.Drive:=dPrimaryMaster;
    edit1.text:=HDD.Serial;


    و سریال هارد خودم رو بدست آوردم

    میخواستم بدونم آیا این روش درسته؟ روی تمام هارد ها جواب میده؟

    با تشکر

  8. #48

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    میخواستم بدونم آیا این روش درسته؟ روی تمام هارد ها جواب میده؟
    من در یک نرم افزار از همین روش استفاده کرده ام. نرم افزار مربوطه روی چند هزار کامپیوتر اجرا شده و بعد از دو سال هنوز مشکلی در این خصوص گزارش نشده.

  9. #49
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    اهواز
    پست
    925

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    نقل قول نوشته شده توسط BORHAN TEC مشاهده تاپیک
    سلام
    جناب majid_ramak کدی که قرار داده اید درست است ولی مشکل اینجا است که این کد در محیط های یونیکد( دلفی 2009 به بعد یک رشته خالی را بر می گرداند). البته مشکل خاصی نبود فقط کافی بود که نوع مقدار برگشتی را به PAnsiChar تغییر بدیم و همچنین در آخرین خط تابع باید به جای PChar از PAnsiChar استفاده کنیم.
    همینجا لازمه از همه دوستانی که به خاطر رفع این مشکل کمک کردند تشکر کنم.

    کد اصلاح شده که به درستی کار می کند:
    function Sa_GetIdeSerialNumber : PAnsiChar;
    const IDENTIFY_BUFFER_SIZE = 512;
    type
    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;
    TSendCmdInParams = packed record
    // Buffer size in bytes
    cBufferSize : DWORD;
    // Structure with drive register values.
    irDriveRegs : TIDERegs;
    // Physical drive number to send command to (0,1,2,3).
    bDriveNumber : BYTE;
    bReserved : Array[0..2] of Byte;
    dwReserved : Array[0..3] of DWORD;
    bBuffer : Array[0..0] of Byte; // Input buffer.
    end;
    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 : DWORD;
    wMultSectorStuff : Word;
    ulTotalAddressableSectors : DWORD;
    wSingleWordDMA : Word;
    wMultiWordDMA : Word;
    bReserved : Array[0..127] of BYTE;
    end;
    PIdSector = ^TIdSector;
    TDriverStatus = packed record
    // Error code from driver, or 0 if no error.
    bDriverError : Byte;
    // Contents of IDE Error register. Only valid when bDriverError is SMART_IDE_ERROR.
    bIDEStatus : Byte;
    bReserved : Array[0..1] of Byte;
    dwReserved : Array[0..1] of DWORD;
    end;
    TSendCmdOutParams = packed record
    // Size of bBuffer in bytes
    cBufferSize : DWORD;
    // Driver status structure.
    DriverStatus : TDriverStatus;
    // Buffer of arbitrary length in which to store the data read from the drive.
    bBuffer : Array[0..0] of BYTE;
    end;
    var hDevice : THandle;
    cbBytesReturned : DWORD;
    ptr : PChar;
    SCIP : TSendCmdInParams;
    aIdOutCmd : Array [0..(SizeOf(TSendCmdOutParams)+IDENTIFY_BUFFER_SIZE-1)-1] of Byte;
    IdOutCmd : TSendCmdOutParams absolute aIdOutCmd;
    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 := ''; // return empty string on error
    if SysUtils.Win32Platform=VER_PLATFORM_WIN32_NT then // Windows NT, Windows 2000
    begin
    // warning! change name for other drives: ex.: second drive '\\.\PhysicalDrive1\'
    hDevice := CreateFile( '\\.\PhysicalDrive0', GENERIC_READ or GENERIC_WRITE,
    FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0 );
    end
    else // Version Windows 95 OSR2, Windows 98
    hDevice := CreateFile( '\\.\SMARTVSD', 0, 0, nil, CREATE_NEW, 0, 0 );
    if hDevice=INVALID_HANDLE_VALUE then Exit;
    try
    FillChar(SCIP,SizeOf(TSendCmdInParams)-1,#0);
    FillChar(aIdOutCmd,SizeOf(aIdOutCmd),#0);
    cbBytesReturned := 0;
    // Set up data structures for IDENTIFY command.
    with SCIP do
    begin
    cBufferSize := IDENTIFY_BUFFER_SIZE;
    // bDriveNumber := 0;
    with irDriveRegs do
    begin
    bSectorCountReg := 1;
    bSectorNumberReg := 1;
    // if Win32Platform=VER_PLATFORM_WIN32_NT then bDriveHeadReg := $A0
    // else bDriveHeadReg := $A0 or ((bDriveNum and 1) shl 4);
    bDriveHeadReg := $A0;
    bCommandReg := $EC;
    end;
    end;
    if not DeviceIoControl( hDevice, $0007c088, @SCIP, SizeOf(TSendCmdInParams)-1,
    @aIdOutCmd, SizeOf(aIdOutCmd), cbBytesReturned, nil ) then Exit;
    finally
    CloseHandle(hDevice);
    end;
    with PIdSector(@IdOutCmd.bBuffer)^ do
    begin
    ChangeByteOrder( sSerialNumber, SizeOf(sSerialNumber) );
    (PChar(@sSerialNumber)+SizeOf(sSerialNumber))^ := #0;
    Result := PAnsiChar(@sSerialNumber);
    end;
    end;
    کد با را در ویندوز هفت و دلفی XE4 شماره سریال هارد را به شکل غلط نمایش میدهد.
    فرضا شماره سریال WD-WCC4J3142470 را به شکل غلط اینطور نمایش میدهد: W4CCW4137J0742-
    به نظر شما علت چیست و چگونه برنامه اصلاح میشود؟ متشکرم
    آخرین ویرایش به وسیله khoshblagh : چهارشنبه 21 بهمن 1394 در 23:28 عصر

  10. #50

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    سلام.ویندوزم win10 x64 هستش.فایل exe ارور میده اما بادسترسی admin اجرا کنی کار میده.

  11. #51

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    سلام
    من از HDDInfo استفاده میکنم ولی الان که ویندوزم رو عوض کردم و نرم افزارم رو دوباره باز میکنم کتابخانه HDDInfo رو نمیشناسه

    توی دلفی XE4 دارم کار میکنم
    تعجب میکنم چون قبلا مشکلی نداشتم ولی الان نمیشناسه
    لطفا راهنماییی کنید
    آخرین ویرایش به وسیله mortezahbh : جمعه 07 اسفند 1394 در 06:07 صبح

  12. #52

    نقل قول: سوال: بدست آوردن شماره سریال فیزیکی هارد دیسکی که برنامه بر روی آن قرار دارد!!!

    اگه سوالم واضح نیست بگید که بیشتر توضیح بدم

صفحه 2 از 2 اولاول 12

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •