我使用Filecopy()函数从CDROM媒体复制文件,似乎复制了READONLY属性,导致重新安装问题。
如何删除只读属性?
答案 0 :(得分:4)
内置的support functions没有执行此操作的例程。
所以它归结为其他几个选项之一。
ShellExecute
attrib -r C:\path\FileName.txt
以下是使用COM
执行此操作的示例函数procedure RemoveReadOnly(FileSpec : String);
var
FSO : Variant;
File : Variant;
begin
FSO := CreateOleObject('Scripting.FileSystemObject');
File := FSO.GetFile(FileSpec);
if File.attributes and 1 then // Check if Readonly already
File.attributes := File.attributes - 1;
end;
MSDN包含FilesSystemObject上的文档以及Attributes的使用。
<强>已更新强>
以下是直接调用Windows API的示例,这是最佳选择。
function GetFileAttributes(lpFileName: PAnsiChar): DWORD;
external 'GetFileAttributesA@kernel32.dll stdcall';
function SetFileAttributes(lpFileName: PAnsiChar;
dwFileAttributes: DWORD): BOOL;
external 'SetFileAttributesA@kernel32.dll stdcall';
procedure RemoveReadOnly(FileName : String);
var
Attr : DWord;
begin
Attr := GetFileAttributes(FileName);
if (Attr and 1) = 1 then
begin
Attr := Attr -1;
SetFileAttributes(FileName,Attr);
end;
end;