我想创建一个小型的C#应用程序,该应用程序可以执行某些操作,包括删除Windows 8/10上的内置现代应用程序。当我尝试使用PowerShell命令时,它可以完美运行。在C#中,它也会删除图块,但仅限当前用户使用。
PS中的工作代码:
Get-AppxPackage -AllUsers | Remove-AppxPackage
并且C#中的代码无法按预期工作:
using System.Management.Automation;
namespace RemoveAppxPackages
{
class RemoveAppxPackages
{
static void Main(string[] args)
{
PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-AppxPackage").AddParameter("AllUsers");
ps.AddCommand("Remove-AppxPackage");
ps.Invoke();
}
}
}
因此,运行PS命令即可完成此工作,即使用户配置文件是在运行命令后创建的,它也会从所有用户中删除这些应用。如果我尝试使用C#,它将正常运行。奇怪的是,由于AllUsers参数,它必须以管理员身份运行,但是看起来它只是忽略了该参数。