我正在研究忽略由" Microsoft"创建的文件的逻辑。将C:\驱动器抓取为使用CIFS共享(" smb:// hostname:445 / sharedfoldername")。
我之前的帖子link使用了建议的解决方案(解决方法是使用PEParser代码。当我在同一台Windows机器上时工作正常,但当我尝试在ubuntu上运行我的应用程序时在那里我试图抓取共享的c:\驱动器 - 如果我没有使用逻辑来忽略微软文件,它的爬行没有任何问题。但是当我应用它时,我找不到我想忽略的Microsoft文件。
任何人都可以建议从ubuntu / linux机器获取文件的Windows属性的任何解决方案吗? 下面的代码块返回Windows的公司名称值 - 我想从smb路径获得。
PE pe = null;
try {
pe = PEParser.parse(path);
ResourceDirectory rd = pe.getImageData().getResourceTable();
ResourceEntry[] entries = ResourceHelper.findResources(rd, ResourceType.VERSION_INFO);
for (int i = 0; i < entries.length; i++) {
byte[] data = entries[i].getData();
VersionInfo version = ResourceParser.readVersionInfo(data);
StringFileInfo strings = version.getStringFileInfo();
StringTable table = strings.getTable(0);
for (int j = 0; j < table.getCount(); j++) {
String key = table.getString(j).getKey();
String value = table.getString(j).getValue();
if (key.equalsIgnoreCase("companyname")) {
if (value.contains("Microsoft")) {
return true;
} else {
return false;
}
}
}
}
} catch (Exception e) {
log.debug("Exception caught which checking for Microsoft File " + e.getMessage());
}