생성된 파일마다 고유한 값은 어떤것이 있을까요?

yjc99의 이미지

윈도우에서(XP이상) 파일의 고유한 값으로 참조할만한 것이 어떤것이 있을까요?
단 파일이름이나 일반적인 속성같이 사용자가 변경가능한것은 안되고, 파일이 생성되었을때 (중간에 사용자가 파일이름이나 속성을 맘대로 바꾼다고 해도) 파일이 삭제될때까지 계속 동일하게 유지될수 있는 값이어야 합니다.
파일속성중에는 유일하게 CreateTime 이 바로 적합한데, 문제는 동시에 생성할시 동일한값을 가질수 있다는 것입니다.

어떤 식으로든 파일이 삭제되기까지 , 파일마다 유일한 값을 붙여야 하는데 , 도저히 방법이 없네요.

phonon의 이미지

mirheekl의 이미지

CreateTime은 말씀하신대로 동시발생 문제가 있고
심지어는 속성 편집으로 그것도 변경이 가능합니다. 어차피 그것도 어딘가에 기록된 데이터에 불과하니까요.

해시값은 파일 내용이 변할경우 같이 따라서 변하겠지요..
따라서 해시값을 쓴다면 파일내용이 변경될때마다 변경내역을 기록해야만 탐색 등에 이용할 수 있을겁니다.

GUID의 경우에는 차후에 남이 그것을 변경할 수 없어야 한다는 보장이 있어야 하고
직접 생성하지 않은 파일에는 붙이기 힘들다는 문제가 있지요. 따로 관리한다 한들 사용자가 임의로 바꿔치기할 수 있으니까요.

속성과 이름 외에 파일내용을 남이 변경하지 못한다는 보장이 있다면 아무거나 쓸 수 있겠네요..
그렇지 않다면 좀 골치가 아파지겠고..

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

feanor의 이미지

유닉스의 inode 같은 값을 원하시는 것이 맞나요?

잠시 찾아보니 GetFileInformationByHandle 이라는 함수를 사용하면 된다고 하네요. 아래는 MSDN에서 찾은 내용입니다.

http://msdn.microsoft.com/en-us/library/aa364952.aspx

You can compare the VolumeSerialNumber and FileIndex members returned in the BY_HANDLE_FILE_INFORMATION structure to determine if two paths map to the same target; for example, you can compare two file paths and determine if they map to the same directory.

http://msdn.microsoft.com/en-us/library/aa363788.aspx

The identifier that is stored in the nFileIndexHigh and nFileIndexLow members is called the file ID. Support for file IDs is file system-specific. File IDs are not guaranteed to be unique over time, because file systems are free to reuse them. In some cases, the file ID for a file can change over time.

In the NTFS file system, a file keeps the same file ID until it is deleted. You can replace one file with another file without changing the file ID by using the ReplaceFile function. However, the file ID of the replacement file, not the replaced file, is retained as the file ID of the resulting file.

mirheekl의 이미지

VC의 도움말에는 저 영역에

Note that this value is useful only while the file is open by at least one process. If no processes have it open, the index may change the next time the file is opened.

란 말이 있었는데.. 최신판에선 삭제가 됐군요! 대신 적어주신 NTFS에서는 지워질때까지 유지된다는 부분이 추가됐군요.. 굿 굿 베리 굿! 좋은거 배워 갑니다 *^^*

--
This is for you new people. I have just one rule :
Everyone fights, no one quits. If you don't do your job, I'll shoot you myself. Do you get me?

--

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.