这可能是一个愚蠢的问题,但是我似乎无法创建一个所有用户都可以写入的文本文件,它们总是由当前登录的用户拥有。
有什么想法吗? 我应该使用TextFile还是TFileStream?
这可能是一个愚蠢的问题,但是我似乎无法创建一个所有用户都可以写入的文本文件,它们总是由当前登录的用户拥有。
有什么想法吗? 我应该使用TextFile还是TFileStream?
我认为OP想知道在哪里创建所有用户都可以写入的文件。如果是这样,Windows的理念规定这样的文件应该创建在由SHGetFolderPath(CSIDL_COMMON_DOCUMENTS)返回的目录中,或者可能是CSIDL_COMMON_APPDATA。
“在一台机器上可被所有用户写入”是什么意思?
你的意思是一个用户创建了一个文件,然后另一个用户尝试写入该文件,但失败了吗?
还是你的意思是一个用户创建了一个文件,而其他同时连接到同一台机器(通过终端会话)的用户在第一个用户写入文件时无法写入该文件?
如果是第一种情况,那么文件保存在哪里?它是否在所有用户都具有写入权限的文件夹中?
如果是第二种情况,您可以打开文件进行读/写操作而不锁定它:
var
Stream : TFileStream;
begin
Stream := TFileStream.Create('D:\MyFile',fmOpenReadWrite + fmShareDenyNone);
try
finally
Stream.Free;
end;
end;
你是在谈论文件的NTFS权限吗?如果是,你需要查找Delphi封装的NT安全API,并使用该API更改文件安全设置以允许Everyone组访问该文件。如果你只是在谈论文件在打开时的共享访问,那么vcldeveloper已经给出了答案。
SetFileSecurity()
еҮҪж•°еңЁж–Ү件дёҠи®ҫзҪ®иҫғе°‘йҷҗеҲ¶зҡ„жқғйҷҗгҖӮ - Remy Lebeau