C#:查询远程服务器以查看哪个用户锁定了文件
**编辑:原来的问题不清楚。我在任何.Net程序集中都找不到IADsFileServiceOperations,这就是问题所在——并不是我不知道如何使用它** 我已经挖了好几个小时了,没办法弄明白 在C#中,是否有办法查询远程文件服务器(最好使用C#:查询远程服务器以查看哪个用户锁定了文件,c#,active-directory,wmi,C#,Active Directory,Wmi,**编辑:原来的问题不清楚。我在任何.Net程序集中都找不到IADsFileServiceOperations,这就是问题所在——并不是我不知道如何使用它** 我已经挖了好几个小时了,没办法弄明白 在C#中,是否有办法查询远程文件服务器(最好使用ManagementObjectSearcher,但不一定),并询问当前哪个用户锁定了文件 我能想出的最好办法就是 var en = new DirectoryEntry($@"\\{hostName}\root\cimv2"); var fso = s
ManagementObjectSearcher
,但不一定),并询问当前哪个用户锁定了文件
我能想出的最好办法就是
var en = new DirectoryEntry($@"\\{hostName}\root\cimv2");
var fso = sessQuery.NativeObject as IADsFileServiceOperations;
var resources = fso.Resources();
但就我的一生而言,我不知道如何在.Net项目中使用IADsFileServiceOperations
帮助。。。?请…?
IADsFileServiceOperations
是一个公开两种方法的接口:
.NET
项目中,需要向该项目添加COM引用。转到添加参考对话框,然后单击COM
选项卡并添加活动DS类型库
通过添加此COM
引用,您可以使用ActiveDS
获得所有AD
类型和接口
希望它能解决您的问题。这对您有帮助吗?谢谢@Roni,但显然我的问题措辞不当。我的意思是,我在任何.Net程序集中都找不到IADsFileServiceOperations,也不知道如何链接到它以使其在.Net应用程序中可用。谢谢阿里,但我的问题显然不清楚。我的问题不是我不知道如何使用IADsFileServiceOperations,而是我不知道如何在.NET中使用它-也就是说,我在任何.NET程序集中都找不到它…@user884248抱歉误解。我更新了答案,它解决了你的问题。阿里-你是最好的。非常感谢。
var en = new DirectoryEntry($@"\\{hostName}\root\cimv2");
var fso = sessQuery.NativeObject as IADsFileServiceOperations;
var resources = fso.Resources(); // returns resource objects representing the current open resources on the file
foreach(var res in resources)
{
// res.User
// res.Path
// res.LockCount
if(res.LockCount > 0)
{
// user has lock on file
}
}