В этом вопросе в сообщении Old New Thing также говорится о том, как вы можете установить некоторые параметры реестра для каждого приложения, чтобы предотвратить закрепление приложения на панели задач.
Все, что вам нужно сделать, это добавить значение «NoStartPage» к ключу вашего приложения в папке Root\Applications. Значение может быть пустым и любого типа, если Windows просто увидит, что оно есть, оно не покажет возможность закрепить приложение, когда пользователь щелкнет его правой кнопкой мыши на панели задач.
Вот документация Microsoft по этой функции: Используйте реестр, чтобы приложение
Одно предостережение заключается в том, что в Windows 7 из-за UAC вам нужно запускать от имени администратора для обновления реестра. Я сделал это через app.manifest.
Ниже приведен код для поиска и обновления правильных разделов реестра (надеюсь, он не слишком подробный):
public static void Main(string[] args)
{
// Get Root
var root = Registry.ClassesRoot;
// Get the Applications key
var applicationsSubKey = root.OpenSubKey("Applications", true);
if (applicationsSubKey != null)
{
bool updateNoStartPageKey = false;
// Check to see if your application already has a key created in the Applications key
var appNameSubKey = applicationsSubKey.OpenSubKey("MyAppName.exe", true);
if (appNameSubKey != null)
{
// Check to see if the NoStartPage value has already been created
if (!appNameSubKey.GetValueNames().Contains("NoStartPage"))
{
updateNoStartPageKey = true;
}
}
else
{
// create key for your application in the Applications key under Root
appNameSubKey = applicationsSubKey.CreateSubKey("MyAppName.exe", RegistryKeyPermissionCheck.Default);
if (appNameSubKey != null)
{
updateNoStartPageKey = true;
}
}
if (updateNoStartPageKey)
{
// Create/update the value for NoStartPage so Windows will prevent the app from being pinned.
appNameSubKey.SetValue("NoStartPage", string.Empty, RegistryValueKind.String);
}
}
}
person
Scott Wylie
schedule
03.05.2013