
Thank you for posting the results. That list is effectively what I see for myself as well.
Behind the scenes, our code is calling into IKnownFolderManager.GetFolder for the Desktop folder (FOLDERID_Desktop) and then we enumerate the shell objects there to get the results you listed. I found another place where we are filtering out some extra results that normally shouldn't appear and I wonder if your two items are getting excluded there.
Please open our CustomShellObjects QuickStart and change the ShellTreeListBox.RootSpecialFolderKind="Default". Then go to the CustomShellService.cs file and change the CreateObjectChildren override to this:
public override IList<IShellObject> CreateObjectChildren(IShellObject parentShellObject) {
if (parentShellObject.SpecialFolderKind == SpecialFolderKind.Default) {
var desktopFolder = this.CreateSpecialFolder(SpecialFolderKind.Desktop);
if (desktopFolder != null) {
var count = 0;
foreach (var desktopChildObject in desktopFolder.Children) {
System.Diagnostics.Debug.WriteLine($"{++count}: {desktopChildObject.Name} - {desktopChildObject.Kind} - {desktopChildObject.SpecialFolderKind} - {desktopChildObject.ParsingName}");
}
}
}
var results = base.CreateObjectChildren(parentShellObject);
return results;
}
Run the QuickStart and see what prints in the VS Output. That should be the full unfiltered list of items the Shell tells us is at the Desktop level.