windows – 如何检查多个用户是否使用网络共享EXE文件?
发布时间:2020-12-14 02:53:36 所属栏目:Windows 来源:网络整理
导读:我有一个应用程序,它位于网络共享文件夹中的服务器上.网络中的许多用户可以同时使用该文件.我想执行该EXE文件的更新并执行此操作,我想知道网络中的人(除了我)当前正在使用该文件. 是否可以通过编程方式进行检查?例如:列出现在使用该文件的所有用户名?或至
我有一个应用程序,它位于网络共享文件夹中的服务器上.网络中的许多用户可以同时使用该文件.我想执行该EXE文件的更新并执行此操作,我想知道网络中的人(除了我)当前正在使用该文件.
是否可以通过编程方式进行检查?例如:列出现在使用该文件的所有用户名?或至少检索该文件上的锁数? 谢谢. 解决方法
要列出计算机中的打开共享文件,您可以使用ADSI(Active Directory服务接口).
要从delphi使用这些接口,您必须导入Active DS类型库 然后访问 检查此示例代码 {$APPTYPE CONSOLE} uses ActiveDs_TLB,Variants,ActiveX,SysUtils; function ADsGetObject(lpszPathName:WideString; const riid:TGUID; out ppObject):HRESULT; safecall; external 'activeds.dll'; procedure ListSharedResourcesInUse; var FSO : IADsFileServiceOperations; Resources : IADsCollection; Resource : OleVariant; pceltFetched : Cardinal; oEnum : IEnumvariant; begin //establish the connection to ADSI ADsGetObject('WinNT://./lanmanserver',IADsFileServiceOperations,FSO); //get the resources interface Resources := FSO.Resources; //get the enumerator oEnum:= IUnknown(Resources._NewEnum) as IEnumVariant; while oEnum.Next(1,Resource,pceltFetched) = 0 do begin Writeln(Format('Resource %s User %s',[Resource.Path,Resource.User])); Resource:=Unassigned; end; end; begin try CoInitialize(nil); try ListSharedResourcesInUse; finally CoUninitialize; end; except on E:Exception do Writeln(E.Classname,':',E.Message); end; Writeln('Press Enter to exit'); Readln; end. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
热点阅读