获取已打开文件的用户名

4
有没有办法了解当前打开文件的用户的用户名?
我正在开发一个桌面客户端程序,可以供多个用户使用。该应用程序将打开一些文件,我想允许多个用户同时打开这些文件,但只允许第一个用户拥有写权限。我的需求是能够告诉其他用户,哪个用户对文件具有写访问权限。
这是一个应用程序可以学习到的吗?(我正在使用VS 2008进行开发。)

这是某种客户端-服务器应用程序吗? - R. Martinho Fernandes
1个回答

2

Windows系统不支持此功能。但您可以轻松地自己添加它。当您获得对文件的写入访问权限时,请在同一目录下写另一个隐藏文件,并将用户名(Environment.UserName)写入其中,例如~originalname.username。

如果无法获得写入访问权限,请尝试打开该文件以读取用户名。如果仍然失败,请等待一秒钟再次尝试。


3
这是一个有效的解决方案。但我认为你可以使用Windows API来实现这一点。你可以了解哪些进程打开了文件,以及哪个用户拥有该进程。我不知道正确的API调用方法,但这似乎是可行的。 - R. Martinho Fernandes
NtQuerySystemInformation,实际参数未记录,并且每个操作系统的结构都不同。更重要的是:拥有该文件的进程可能存在于数千英里之外的某台机器上,通过VPN隧道连接。远离您的机器。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接