Delphi 2009에서 파일 소유자를 얻으려면 어떻게해야합니까? 이 회사 명 속성에 대해 잘 작동Delphi 2009 - 파일 소유자 이름 얻기
type
TCustomFileInfo= record
CompanyName,
Owner,
SpecialBuild: string;
procedure Clear;
end;
function GetFileInfo(const FileName: string): TCustomFileInfo;
type
PLandCodepage = ^TLandCodepage;
TLandCodepage = record
wLanguage,
wCodePage: word;
end;
var
dummy,
len: cardinal;
buf, pntr: pointer;
lang: string;
begin
len := GetFileVersionInfoSize(PChar(FileName), dummy);
if len = 0 then
RaiseLastOSError;
GetMem(buf, len);
try
if not GetFileVersionInfo(PChar(FileName), 0, len, buf) then
RaiseLastOSError;
if not VerQueryValue(buf, '\VarFileInfo\Translation\', pntr, len) then
RaiseLastOSError;
lang := Format('%.4x%.4x', [PLandCodepage(pntr)^.wLanguage, PLandCodepage(pntr)^.wCodePage]);
// Get Company's name, if available...
if VerQueryValue(buf, PChar('\StringFileInfo\' + lang + '\CompanyName'), pntr, len){ and (@len <> nil)} then
result.CompanyName := PChar(pntr);
finally
FreeMem(buf);
end;
end;
을 ...,하지만 난 어떻게 소유자를 얻는하지 마십시오
내가 파일을 가져 기능을 가지고
는 다음과 같이 속성 . 또한, 나는 파일이 버전 번호에서이 없기 때문에, 말이 파일 버전 번호, GetFileVersionInfoSize
이 작동하지 않습니다,이없는 파일에 대한이 같은 방법을 사용하려고하면 모든.
GetFileVersionInfoSize
에 대한 다른 방법이나 파일 소유자를 가져 오는 다른 방법이 있습니까? 나는 Windows apis에 익숙하지 않아서, 이것이 내가 원하는 것 (소유자의 이름을 얻는 것)을 달성하는 올바른 방법인지는 알 수 없다.
원하는 파일 시스템 속성입니까? –
'GetLastError()'가 실제로 오류가 발생하지 않는다면 GetFileVersionInfoSize()는 0을 반환하는 것은 오류가 아닙니다. 'GetLastError()'가 0을 반환하더라도'RaiseLastOSError()'는 항상'EOSError' 예외를 발생시킵니다. –
@DavidHeffernan 불행히도 포르투갈어로 사진을 찍었지만 이해할 수있을 것 같습니다 : [그림] (https :// /puu.sh/uywsh/5f59bf2dc9.png) – Alisson