**编辑:原始问题不清楚。我无法在任何.Net程序集中找到IADsFileServiceOperations,这就是问题所在-不是因为我不知道如何使用它**
我已经闲逛了几个小时,无法解决这个问题...
在C#中,有没有一种方法可以查询远程文件服务器(最好使用if (control is RadioButton rb) {
rb.Text = text;
} else if (control is Label lbl) {
lbl.Text = text;
} else if (control is Button btn) {
btn.Text = text;
}
,但不一定要查询),并询问它当前哪个用户已锁定文件?
我能想到的最好的是
ManagementObjectSearcher
但是对于我的一生,我无法弄清楚如何在.Net项目中使用var en = new DirectoryEntry($@"\\{hostName}\root\cimv2");
var fso = sessQuery.NativeObject as IADsFileServiceOperations;
var resources = fso.Resources();
。
帮助...?拜托...?
答案 0 :(得分:1)
IADsFileServiceOperations
是一个公开两种方法的接口:
https://docs.microsoft.com/en-us/windows/desktop/api/iads/nn-iads-iadsfileserviceoperations#methods
IADsFileServiceOperations :: Resources方法获取一个指向 指向IADsCollection接口的指针 资源对象,表示此文件上的当前打开的资源 服务。
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
}
}
更新1:
要将活动目录类型添加到您的.NET
项目中,需要向该项目添加COM引用。转到添加引用对话框,然后在COM
标签上添加Active DS Type Library
。
通过添加此COM
参考,您可以使用AD
拥有所有ActiveDS
类型和接口。
希望它可以解决您的问题。