Ответ 1
После долгих поисков других мест в сети, я наконец-то получил Shell, чтобы перейти к исполняемому файлу создаваемого приложения.
Процесс "Встраивание" - это трехэтапный процесс, в случае программного обеспечения, над которым я работаю, мы начинаем с отключения Диспетчера задач. Затем мы устанавливаем исполняемый файл оболочки в реестр локальной машины, а затем повторяем процесс в реестра текущего пользователя.
Ниже приведен код, который достигает этого:
public void embedSoftware()
{
try
{
// Disable Task Manager
regKey = Registry.CurrentUser.OpenSubKey(subKey, true).CreateSubKey("System");
regKey.SetValue("DisableTaskMgr", 1);
regKey.Close();
// Change the Local Machine shell executable
regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
regKey.SetValue("Shell", shell, RegistryValueKind.String);
regKey.Close();
// Create the Shell executable Registry entry for Current User
regKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
regKey.SetValue("Shell", shell);
regKey.Close();
MessageBox.Show("Embedding Complete");
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
В этом примере переменная "shell" представляет собой строку, содержащую путь исполняемого файла для использования в качестве новой оболочки Windows.
В дополнение к этому существует способ "вставить" программное обеспечение, этот метод просто удаляет значения "DisableTaskMgr" и "Shell" из реестров текущего пользователя, он также сбрасывает значение "Shell" в реестре локального компьютера на "explorer.exe".
Я надеюсь, что это поможет другим людям, которые имеют проблемы с программным обеспечением Windows Shells.
Привет,
Ричард