2013-03-29 3 views
0

나는 microtechnet 포럼과 "하드 디스크 일련 번호 변경"도구에서 "http://www.xboxharddrive.com/freeware.html"의 VloumeID 도구를 확인했습니다. 그러나 이러한 도구는 VolumeID 만 변경할 수 있습니다. 동일한 PC에있을 수있는 다른 논리 드라이브의 다른 VolumeID와 충돌하지 않고 새로운 암호를 생성하는 안전한 방법입니다새 볼륨 ID를 생성

+0

이 질문은 Delphi와 관련이 있습니다. 설명 할 수 있니? 그렇지 않으면 [su]에 대한 질문과 같이 보입니다. –

답변

4

프로그래밍 방식으로 볼륨 일련 번호를 설정한다고 가정합니다.

볼륨 일련 번호 (VSN)는 현재 날짜/시간을 기반으로 생성됩니다. 정확한 구현 세부 사항은 OS 버전 및/또는 형식에 사용 된 도구별로 다를 수 있습니다.

더 많은 정보를 원하시면 다음 링크를 참조하십시오 : 다음 델파이 코드로 변환

/* 
* 28.2 CALCULATING THE VOLUME SERIAL NUMBER 
* 
* For example, say a disk was formatted on 26 Dec 95 at 9:55 PM and 41.94 
* seconds. DOS takes the date and time just before it writes it to the 
* disk. 
* 
* Low order word is calculated: Volume Serial Number is: 
* Month & Day 12/26 0c1ah 
* Sec & Hundrenths 41:94 295eh 3578:1d02 
* ----- 
* 3578h 
* 
* High order word is calculated: 
* Hours & Minutes 21:55 1537h 
* Year 1995 07cbh 
* ----- 
* 1d02h 
*/ 

static DWORD GetVolumeID(void) 
{ 
SYSTEMTIME s; 
DWORD d; 
WORD lo,hi,tmp; 

GetLocalTime(&s); 

lo = s.wDay + (s.wMonth << 8); 
tmp = (s.wMilliseconds/10) + (s.wSecond << 8); 
lo += tmp; 

hi = s.wMinute + (s.wHour << 8); 
hi += s.wYear; 

d = lo + (hi << 16); 
return d; 
} 

다음 루퍼스 소스 코드에서

:

type 
    TVolumeId = record 
    case byte of 
     0: (Id: DWORD); 
     1: (
     Lo: WORD; 
     Hi: WORD; 
    ); 
    end; 

function GetVolumeID: DWORD; 
var 
    dtNow: TDateTime; 
    vlid: TVolumeId; 
    st: SYSTEMTIME; 
begin 
    GetLocalTime(st); 
    vlid.Lo := st.wDay + (st.wMonth shl 8); 
    vlid.Lo := vlid.Lo + (st.wMilliseconds div 10 + (st.wSecond shl 8)); 

    vlid.Hi := st.wMinute + (st.wHour shl 8); 
    vlid.Hi := vlid.Hi + st.wYear; 

    Result := vlid.Id 
end; 
+0

최대 (안녕) = 2013 + 59 + 23 * 256 = 0x1F18 (첫 번째 문서는이 방법이 Windows에서 더 이상 사용되지 않는 것을 읽습니다.) – OnTheFly

+0

Remko가 말했듯이, 프로그래밍 방식으로 설정하고 싶지만 찾고 있습니다. FAT가 아닌 NTFS로 설정하십시오. 어쨌든, Remko 많이 thx. 이것은 새로운 VolumeID를 생성하는데 많은 도움이되었습니다. 나는 그것을 들여다 볼 것이다. 다시 Thx. – Bahaa

관련 문제