Я собираюсь убить некоторый процесс, который может быть выбран динамически на стороне пользователя. Я кодировал для отображения списка установленного программного обеспечения. Но дело в том, что отображаемое имя отличается от имени службы. Так что некоторые приложения не могут быть убиты. Когда я пытаюсь получить exe-имена файлов, это часто приводит к ошибке «Отказано в доступе».
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
foreach (string skName in rk.GetSubKeyNames())
{
if (rk == null)
{
}
else
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
try
{
List<string> location = new List<string>();
string getname = sk.GetValue("DisplayName").ToString();
if (getname != null)
{
location.Add(sk.GetValue("InstallLocation").ToString());
lstInstalled.Items.Add(new { Col1 = getname });
}
}
catch (Exception ex)
{ }
}
}}
здеськод для удаления выбранных приложений
foreach (DataRow row in dt.Rows)
{
string cs = row["softwarename"].ToString().ToLower();
string[] namelist = cs.Split(' ');
var allProcesses = Process.GetProcesses();
foreach (Process pc in allProcesses)
{
try {
if (cs.Any(pc.ProcessName.ToString().ToLower().Contains))
{
pc.Kill();
}
}
catch {
}
}
}
}