Shell:appsFolder在未安装App时显示Windows资源管理器

时间:2020-06-25 02:34:20

标签: c# windows-services

我有这样的代码

 Process p = new Process();
 p.StartInfo = new ProcessStartInfo("explorer.exe");
 p.StartInfo.Arguments = @"shell:appsFolder\AppName";

但是如果未在计算机上安装该应用程序,则只会打开一个窗口浏览器。

如果未安装该应用程序,如何阻止它打开Windows资源管理器?

我也尝试使用此代码来检查应用程序,它运行正常,但是有没有办法在未安装应用程序时不显示Windows资源管理器?

var FOLDERID_AppsFolder = new Guid("{1e87508d-89c2-42f0-8a7e-645a0f50ca58}");
ShellObject appsFolder = (ShellObject)KnownFolderHelper.FromKnownFolderId(FOLDERID_AppsFolder);
List<PackageInfo> installedPackages = new List<PackageInfo>();
((IKnownFolder)appsFolder).ToList().Where(w => !w.ParsingName.Contains(".txt") && !w.ParsingName.Contains(".chm") && !w.ParsingName.Contains(".htm") && !w.ParsingName.Contains(".html") && !w.ParsingName.Contains("http://") && !w.ParsingName.Contains(".bat") && !w.ParsingName.Contains(".rtf") && !w.ParsingName.Contains(".url") && !w.ParsingName.Contains(".pdf")).ToList().ForEach(fe =>
{
try
{
    installedPackages.Add(new PackageInfo
    {
        DisplayName = (fe.ParsingName.Replace(@"\", @"\\")),
        FullName = fe.Name,
        Version = fe.Properties.System.FileVersion.Value == null ? "" : fe.Properties.System.FileVersion.Value
    });
        Debug.WriteLine(fe.ParsingName);
}
catch { }
});
return installedPackages.OrderBy(ob => ob.FullName).ToList();

我尝试获取进程的输出,错误和退出代码。

p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
string errorx = p.StandardError.ReadToEnd(); //return empty string
string outputx = p.StandardOutput.ReadToEnd(); //return empty string
int exitint = p.ExitCode; //return 1

但是它没有给我任何有用的东西。

1 个答案:

答案 0 :(得分:0)

添加代码后,Windows资源管理器现在不显示

details