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 APIにあまり慣れていないので、これが私が望むもの(所有者の名前を得る)を達成する正しい方法であるかどうかは本当に分かりません。
これは、必要なファイルシステムプロパティですか? –
'GetLastError()'が実際にエラーが発生しない限り、 'GetFileVersionInfoSize()'は0を返してもエラーではありません。 'GetLastError()'が0を返す場合でも、 'RaiseLastOSError()'は常に 'EOSError'例外を送出します。 –
@DavidHeffernan残念ながらポルトガル語で写真を撮りましたが、あなたが理解できると思います:[https:///puu.sh/uywsh/5f59bf2dc9.png) – Alisson