Gestione delle applicazioni predefinite

La funzionalità Imposta accesso al programma e Impostazioni predefinite computer (SPAD) è stata aggiunta a Windows XP e versioni successive di Windows per gestire le impostazioni predefinite per computer. Oltre a SPAD, Windows Vista ha introdotto il concetto di applicazioni predefinite per utente e l'elemento Programmi predefiniti in Pannello di controllo.

Importante

Questo argomento non si applica per Windows 10. Il modo in cui le associazioni di file predefinite funzionano in Windows 10. Per altre informazioni, vedere la sezione Modifiche a come Windows 10 gestisce le app predefinite in questo post.

 

Le impostazioni predefinite per utente sono specifiche di un singolo account utente nel sistema. Se sono presenti impostazioni predefinite per utente, hanno la precedenza sulle impostazioni predefinite corrispondenti per ogni computer per tale account. A partire da Windows 8, il sistema di estendibilità per le impostazioni predefinite del tipo di file e del protocollo è strettamente per utente e le impostazioni predefinite per computer vengono ignorate. SPAD è stato modificato anche in Windows 8 per impostare le impostazioni predefinite per utente.

  • Nei sistemi che eseguono versioni di Windows precedenti a Windows 8, un account utente appena creato riceve le impostazioni predefinite per computer fino a quando non vengono stabilite le impostazioni predefinite per utente. In Windows Vista e versioni successive gli utenti possono usare l'elemento Programmi predefiniti in Pannello di controllo per impostare o modificare le impostazioni predefinite per utente. Inoltre, quando un'applicazione viene eseguita per la prima volta, le impostazioni predefinite per ogni utente possono essere impostate usando le linee guida seguenti nella sezione Application First Run and Defaults .
  • Nei sistemi che eseguono Windows 8, un account utente appena creato si basa sulle impostazioni predefinite per utente dall'inizio e l'impostazione di tali impostazioni predefinite alla prima esecuzione, come illustrato nella sezione Application First Run and Defaults non è più supportata.

Un'applicazione deve registrarsi sia con SPAD che con la funzionalità Programmi predefiniti da offrire come programma predefinito in Windows Vista e versioni successive.

Questo argomento fornisce ai fornitori di software indipendenti (ISV) una guida rapida alla procedura necessaria per registrare e gestire le impostazioni predefinite dell'applicazione in Windows Vista e versioni successive. Sono disponibili collegamenti ad articoli più approfonditi sull'argomento di ogni sezione.

Elemento programmi predefinito in Pannello di controllo

Programmi predefiniti è una funzionalità introdotta in Windows Vista, accessibile direttamente dal menu Start e Pannello di controllo. Fornisce una nuova infrastruttura che funziona con privilegi utente standard (non elevati) ed è progettata per consentire agli utenti e alle applicazioni di gestire le impostazioni predefinite per utente. Per gli utenti, Programmi predefiniti offre un modo unificato e facilmente accessibile per gestire le impostazioni predefinite, le associazioni di file e la riproduzione automatica in tutte le applicazioni nel sistema. Per le applicazioni, l'uso dell'ambito per utente fornito dalle API Programmi predefiniti offre i vantaggi seguenti:

  • Nessuna elevazione

    Un'applicazione non deve elevare i privilegi per richiedere le impostazioni predefinite.

  • Buona cittadinanza

    In un computer con più utenti ogni utente può selezionare applicazioni predefinite diverse.

  • Gestione predefinita

    Le API programmi predefinite offrono un meccanismo affidabile e coerente per il controllo automatico dello stato predefinito e il recupero delle impostazioni perse senza ricorrere alla scrittura direttamente nel Registro di sistema. Tuttavia, a partire da Windows 8, non è consigliabile che le applicazioni eseseguono query sullo stato predefinito perché un'applicazione non può più modificare le impostazioni predefinite. Queste modifiche possono essere apportate solo dall'utente.

Per consentire all'applicazione di gestire le impostazioni predefinite in modo efficace, è necessario registrare l'applicazione come programma predefinito potenziale. Per informazioni dettagliate sulla registrazione e sull'uso delle API programmi predefiniti, vedere Programmi predefiniti.

I programmi predefiniti offrono anche queste due funzionalità:

  • Interfaccia utente predefinite riutilizzabili

    L'interfaccia utente di entrambe le impostazioni predefinite del programma (Imposta i programmi predefiniti) e le associazioni di file (Associare un tipo di file o un protocollo a un programma) possono essere riutilizzate e chiamate dall'interno di un'applicazione. Ciò consente alle applicazioni di offrire un'esperienza utente standard per la gestione delle impostazioni predefinite e consente agli ISV di sviluppare un'interfaccia utente personalizzata o equivalente.

  • Inclusione di URL e informazioni di marketing

    Come parte della pagina Imposta i programmi predefiniti dell'elemento Programmi predefiniti in Pannello di controllo, un'applicazione può fornire informazioni di marketing e un collegamento al sito Web del fornitore. Questo URL è derivato dal certificato Authenticode con cui è stata firmata l'applicazione. Ciò impedisce l'uso improprio e la sostituzione non autorizzata di questo collegamento. Se un'applicazione ha un certificato Authenticode che include un URL incorporato, l'interfaccia utente di Windows visualizza tale URL incorporato. Gli ISV dovrebbero sfruttare questa funzionalità per indirizzare gli utenti al proprio sito Web per gli aggiornamenti e altri download.

Impostare l'accesso al programma e le impostazioni predefinite del computer

Imposta Impostazioni predefinite di Accesso programma e Computer consente agli amministratori di gestire le impostazioni predefinite a livello di computer ereditate da tutti i nuovi utenti del computer. Prima di Windows 8, SPAD ha anche consentito agli amministratori di ripristinare le associazioni di file in caso di interruzione quando i programmi sono stati rimossi dal sistema. Tuttavia, a partire da Windows 8, SPAD influisce solo sulle impostazioni predefinite specifiche dell'utente.

Per altre informazioni sulla registrazione di un'applicazione in SPAD, vedere Working with Set Program Access and Computer Defaults (SPAD) andRegistering Programs with Client Types.For more information on registr an application in SPAD, see Working with Program Access and Computer Defaults (SPAD) and Registering Programs with Client Types. Le modifiche specifiche e le nuove raccomandazioni sono descritte nelle sezioni seguenti.

Impostazione delle impostazioni predefinite in SPAD

Le impostazioni predefinite per utente eseguono l'override delle impostazioni predefinite per computer.

  • Prima di Windows 8: le impostazioni predefinite impostate in SPAD (che sono per computer) non verranno visualizzate dagli utenti se sono impostate le impostazioni predefinite per utente corrispondenti. Se un utente non ha impostato un valore predefinito per utente, il sistema utilizza il valore predefinito del computer corrispondente. I nuovi account utente in un computer ereditano inizialmente le impostazioni predefinite del computer. La prima volta che un utente esegue un'applicazione, l'applicazione deve richiedere all'utente di assegnare le impostazioni predefinite per utente. Vedere First Run and Defaults (Prima esecuzione e impostazioni predefinite dell'applicazione).
  • A partire da Windows 8: tutte le impostazioni predefinite sono per utente e qualsiasi impostazione predefinita per computer viene ignorata. Le applicazioni non possono più impostare le opzioni predefinite, in modo che non possano consentire all'utente di eseguire l'assegnazione di tali impostazioni predefinite.

Quando un'applicazione pre-Windows 8 implementa Imposta come predefinita in SPAD, è necessario seguire queste linee guida:

  • Le applicazioni devono richiedere solo le impostazioni predefinite a livello di computer tramite SPAD.
  • Le applicazioni non devono richiedere le impostazioni predefinite per utente tramite SPAD.

Quando un'applicazione Windows 8 implementa Imposta come predefinito in SPAD, è necessario registrare i tipi di file e i protocolli in Programmi predefiniti, usando lo stesso nome dell'applicazione usato in SPAD. Ciò consente una modifica in SPAD in modo da riflettere come modifica nella voce Programmi predefiniti corrispondente per l'utente corrente.

Nascondi accesso in SPAD

L'opzione nascondi accesso per ogni possibile impostazione predefinita in SPAD è accessibile in uno dei due modi seguenti:

  • Scegliere la categoria Non-Microsoft delle impostazioni predefinite, che rimuove l'accesso a tutte le impostazioni predefinite di Microsoft.
  • Scegliere la categoria Personalizzata e deselezionare la casella di controllo Abilita accesso a questo programma .

In precedenza, l'esecuzione di una di queste azioni ha rimosso tutti i punti di ingresso alle applicazioni appropriate nel sistema. Linee guida specifiche per questa situazione dicono di rimuovere i tasti di scelta rapida e le icone dalle posizioni seguenti:

  • Desktop
  • Menu Start
  • Barra di avvio veloce (solo Windows Vista e versioni precedenti)
  • Area delle notifiche
  • Menu di scelta rapida
  • Banda attività cartelle

I fornitori sono invitati a implementare queste linee guida nella funzione di callback Nascondi accesso dell'applicazione.

Metodo di accesso nascosto alternativo in SPAD

Per alcune applicazioni legacy, un'implementazione completa di Hide Access potrebbe non essere pratica. Un metodo alternativo che ottiene lo stesso effetto, ma non è facilmente reversibile dall'utente, consiste nel disinstallare l'applicazione. Di seguito viene illustrato il comportamento di esempio e il codice di esempio da implementare.

L'esperienza utente consigliata per questa alternativa è la seguente:

  • Quando l'utente cancella la casella Abilita accesso a questo programma in SPAD, viene presentata l'interfaccia utente seguente.

    Finestra di dialogo vista per nascondere l'accesso al programma

  • Quando l'utente fa clic su OK, viene visualizzato l'elemento Programmi e funzionalità in Pannello di controllo in modo che l'utente possa disinstallare l'applicazione.

  • Gli utenti di Windows XP devono essere presentati con la finestra di dialogo seguente.

    Finestra di dialogo windows XP per nascondere l'accesso al programma

  • Quando l'utente di Windows XP fa clic su OK, viene visualizzato l'elemento Aggiungi o Rimuovi programmi in Pannello di controllo in modo che l'utente possa disinstallare l'applicazione.

Il codice seguente fornisce un'implementazione riutilizzabile per la funzionalità Nascondi accesso come descritto in precedenza. Può essere usato in Windows XP, Windows Vista e Windows 7.

#include <windows.h>
#include <shlwapi.h>
#include <strsafe.h>

PCWSTR c_pszMessage1 = L"To hide access to this program, you need to uninstall it by ";
PCWSTR c_pszMessage2 = L"using\n%s in Control Panel.\n\nWould you like to start %s?";
PCWSTR c_pszApplicationName  = L"Sample App";

int _tmain(int argc, WCHAR* argv[])
{
    OSVERSIONINFO version;
    version.dwOSVersionInfoSize = sizeof(version);

    if (GetVersionEx(&version))
    {
        PCWSTR pszCPLName = NULL;

        if (version.dwMajorVersion >= 6)
        {
            // Windows Vista and later
            pszCPLName = L"Programs and Features";
        }
        else if (version.dwMajorVersion == 5 &&
                 version.dwMinorVersion == 1)
        {
            // XP
            pszCPLName = L"Add/Remove Programs";
        }

        if (pszCPLName != NULL)
        {
            WCHAR szMessage[256], szScratch[256];
            if (SUCCEEDED(StringCchPrintf(szScratch, 
                                          ARRAYSIZE(szScratch), 
                                          c_pszMessage2, 
                                          pszCPLName, 
                                          pszCPLName)))
            {
                if (SUCCEEDED(StringCchCopy(szMessage, 
                                            ARRAYSIZE(szMessage), 
                                            c_pszMessage1)))
                {
                    if (SUCCEEDED(StringCchCat(szMessage, 
                                               ARRAYSIZE(szMessage), 
                                               szScratch)))
                    {
                        if (IDOK == MessageBox(NULL, 
                                               szMessage, 
                                               c_pszApplicationName, 
                                               MB_OKCANCEL))
                        {
                            ShellExecute(NULL, 
                                         NULL, 
                                         L"appwiz.cpl", 
                                         NULL, 
                                         NULL, 
                                         SW_SHOWNORMAL);
                        }
                    }
                }
            }
        }
    }
    return 0;
}

Registrazione per i punti di ingresso dell'applicazione

Un'applicazione può avere molti punti di ingresso all'interno del sistema operativo. Di seguito sono riportate le posizioni consigliate per i punti di ingresso:

  • Desktop
  • Menu Start
  • Barra di avvio rapido (solo Windows Vista e versioni precedenti)
  • Area delle notifiche
  • Menu di scelta rapida
  • Banda attività cartelle

Questa sezione si concentra su queste aree specifiche:

Apri con

Il menu di scelta rapida Apri con consente all'utente di selezionare un'applicazione che può gestire un tipo di file specifico. Mentre Open With può essere usato per aprire un file con un'applicazione una sola volta, può essere usato anche per impostare il valore predefinito per l'estensione del nome file. Pertanto, un'applicazione deve sempre registrarsi per Open With in modo che gli utenti vengano presentati con tale applicazione come scelta. Le applicazioni possono registrare sia i tipi di file che i protocolli per Open With. Le applicazioni che registrano i protocolli nel framework Programmi predefiniti vengono aggiunte automaticamente alle opzioni Open With per i protocolli.

Per informazioni sulla registrazione per Open With, vedere Introduzione alle associazioni di file.

Menu Start e barra di avvio rapido

Per diventare più individuabili per l'utente, le applicazioni possono aggiungere collegamenti a varie posizioni in Windows. Il posto più comune per aggiungere un collegamento è il menu Start . In Windows Vista e versioni successive un'applicazione crea un collegamento nella cartella nascosta %ProgramData%\Microsoft\Windows\Start Menu\Programmi da visualizzare nell'elenco dei programmi del menu Start per tutti gli utenti. In genere, un'applicazione aggiunge una sottocartella contenente il collegamento.

Per i programmi di browser e posta elettronica, il menu Start di Windows Vista presenta anche due collegamenti dedicati all'esterno dell'elenco di programmi, denominati canonicamente Internet e Posta elettronica. Dopo aver registrato un'applicazione per tali categorie, il framework Programmi predefiniti può gestire ciò che viene avviato tramite tali collegamenti.

Nota

I collegamenti di menu Start dedicati a Internet e posta elettronica non sono più presenti a partire da Windows 7.

 

Per aumentare ulteriormente la individuabilità, le applicazioni possono anche aggiungere collegamenti al desktop e alla barra di avvio rapido. Le applicazioni devono chiedere all'utente l'autorizzazione (in genere durante l'installazione o la prima esecuzione) prima di aggiungere un'icona al menu Start , al desktop o alla barra di avvio rapido.

Nota

La barra di avvio rapido non è più disponibile a partire da Windows 7. L'alternativa di Windows 7 consiste nell'avere l'applicazione aggiunta alla barra delle applicazioni, ma non è possibile eseguire l'aggiunta a livello di codice perché è rigorosamente una scelta utente.

 

Per altre informazioni, vedere gli argomenti seguenti:

Installazione e impostazione predefinita dell'applicazione

Le procedure di installazione dell'applicazione non sono state modificate in modo fondamentale da Windows XP, ad eccezione di una nuova linea guida per i sistemi che eseguono versioni di Windows precedenti a Windows 8: accettare le impostazioni predefinite per ogni computer in fase di installazione, ma non impostare le impostazioni predefinite per utente fino a quando l'utente esegue prima l'applicazione. Vedere La prima esecuzione dell'applicazione e le impostazioni predefinite. Le applicazioni non devono impostare le impostazioni predefinite per utente durante l'installazione perché sono presenti situazioni in cui la persona che installa l'applicazione non è l'utente previsto. A partire da Windows 8, le impostazioni predefinite per ogni computer non sono supportate e le applicazioni non possono modificare le impostazioni predefinite per utente.

Durante l'installazione, un'applicazione deve copiare i file binari nel disco rigido e scrivere i progID nel Registro di sistema. L'applicazione deve anche registrarsi per Programmi predefiniti e Apri con in questo momento per ogni associazione di file che è un candidato per gestire. L'applicazione può usare la sottochiave OpenWithProgIds per registrare con Open With.

Per altre informazioni, vedere gli argomenti seguenti:

Aggiornamenti delle applicazioni e impostazioni predefinite

Molte applicazioni hanno la possibilità di aggiornarsi nel tempo. Questa procedura di aggiornamento non deve modificare lo stato delle impostazioni predefinite per utente perché tale modifica sarebbe imprevista per l'utente. Tuttavia, è accettabile per un'applicazione controllare le associazioni di file a livello di computer e ripristinarle se sono state danneggiate.

Esecuzione e impostazione predefinita dell'applicazione

Nota

A partire da Windows 8, il sistema gestisce questa procedura per conto di tutte le applicazioni. Le applicazioni non possono più eseguire query e modificare le impostazioni predefinite. Solo l'utente può farlo. Pertanto, le applicazioni non devono tentare di eseguire query per il valore predefinito corrente o modificare tale impostazione predefinita tramite qualsiasi meccanismo. Le applicazioni possono tuttavia fornire un punto di ingresso ai programmi predefiniti nella Pannello di controllo chiamando il metodo LaunchAdvancedAssociationUI dell'interfaccia IApplicationAssociationRegistrationUI.

 

Con l'introduzione delle impostazioni predefinite per utente in Windows Vista, è importante che le applicazioni che contestano le estensioni dei nomi di file comuni offrono un'esperienza utente comune per richiedere queste estensioni. Poiché questi valori predefiniti sono ora impostati nel contesto dell'utente, devono presentarsi come possibilità predefinita solo quando l'utente esegue il programma dopo l'installazione.

La linea guida per stabilire le impostazioni predefinite per utente è questa: quando un'applicazione viene eseguita per la prima volta per un utente specifico, tale applicazione deve richiedere preferenze utente per le associazioni predefinite e di file per se stessa.

L'interfaccia utente consigliata deve fornire due scelte chiare all'utente:

  1. Accettare tutte le impostazioni predefinite che l'applicazione vuole richiedere. Questa opzione può anche impostare altre proprietà predefinite dell'applicazione, ad esempio privacy o impostazioni di aggiornamento automatico. Questa opzione consente all'applicazione di richiedere tutte le impostazioni predefinite registrate.
  2. Personalizzare accettando o non accettando le selezioni predefinite e le impostazioni del programma singolarmente. Questa opzione presenta un'ulteriore interfaccia utente che consente all'utente di effettuare scelte granulari per le opzioni predefinite.

Per altre informazioni, vedere Programmi predefiniti.

Nota

Questa operazione non è supportata a partire da Windows 8.

 

Dopo la registrazione di un'applicazione con programmi predefiniti in Windows Vista e versioni successive, alcune API diventano disponibili per l'applicazione. Ad esempio, un'applicazione potrebbe dover verificare se è il programma predefinito. L'interfaccia IApplicationAssociationRegistration fornisce metodi per eseguire questa operazione.

Qualsiasi applicazione che vuole richiedere le impostazioni predefinite deve prima chiedere all'utente e non richiedere mai le impostazioni predefinite senza autorizzazione. L'utente deve essere chiesto se vogliono rendere l'applicazione predefinita o lasciare il valore predefinito corrente. Dovrebbe anche essere possibile non porre nuovamente questa domanda dopo che l'utente ha fatto la propria scelta.

Per altre informazioni, vedere Programmi predefiniti.

Suggerimenti sulla compatibilità delle applicazioni

Questa sezione fornisce alcuni suggerimenti sulla compatibilità delle applicazioni correlati all'esperienza Programmi predefiniti in Windows.

Evitare di attivare Per-User virtualizzazione

Con l'ambiente UAC (User Account Control), le applicazioni devono sempre essere eseguite con solo diritti utente standard per la migliore esperienza del cliente. Per motivi di sicurezza, le applicazioni con un livello di privilegi utente standard vengono bloccate dalla scrittura a determinate parti del Registro di sistema e a determinati file di sistema. Windows Vista e versioni successive di Windows forniscono un livello di compatibilità dell'applicazione temporanea (AppCompat) per consentire alle applicazioni di eseguire la transizione. I tentativi bloccati di scrivere nel Registro di sistema o nei file di sistema sono "virtualizzati" in modo che l'applicazione continui a essere eseguita, ma le aree sensibili del sistema non vengono modificate. Tuttavia, le applicazioni non devono basarsi sulla tecnologia AppCompat come soluzione a lungo termine. Le applicazioni devono invece usare molti strumenti disponibili per verificare che possano essere eseguiti correttamente in base ai diritti utente standard. Alcune riprogrammazione dell'applicazione potrebbero essere necessarie per eseguire questa operazione, ma dovrebbe essere eseguita in interesse per la compatibilità a lungo termine.

Evitare avvisi appCompat o blocchi da Assistente compatibilità programmi

L'Assistente compatibilità programmi (PCA) viene fornito in Windows Vista e versioni successive. Lo scopo è quello di fornire un metodo automatizzato per rendere i programmi meno recenti con problemi di compatibilità migliori. Il PCA monitora i programmi per i problemi noti. Se viene rilevato un problema, notifica all'utente del problema e offre di applicare soluzioni efficaci prima che l'utente esegua di nuovo il programma. Per evitare di visualizzare questi avvisi o blocchi, gli ISV devono usare molti strumenti disponibili per garantire che le applicazioni siano compatibili con Windows Vista, Windows 7 e versioni successive.

Supporto per le versioni precedenti del sistema operativo Windows

L'infrastruttura Programmi predefiniti non è disponibile in alcun sistema operativo Windows prima di Windows Vista. Pertanto, quando le applicazioni passano alla nuova infrastruttura Programmi predefiniti, devono conservare il codice predefinito dell'applicazione precedente per mantenere la compatibilità con le versioni precedenti di Windows. Un'applicazione deve eseguire un controllo della versione del sistema operativo nell'ambito dell'installazione per determinare il codice predefinito dell'applicazione da eseguire.

Per supportare un aggiornamento da Windows XP a Windows Vista o versioni successive, le applicazioni devono aggiungere tutte le voci del Registro di sistema necessarie per programmi predefiniti anche quando si installano in un computer che esegue Windows XP. La registrazione non avrà alcun effetto su un computer che esegue Windows XP, ma se il computer viene aggiornato successivamente, l'applicazione sarà già registrata e in grado di sfruttare il framework.

Per altre informazioni, vedere OSVERSIONINFO.

Risorse aggiuntive

Procedure consigliate per le associazioni di file

Scenario di esempio di associazione file

Programmi predefiniti

Uso di Set Program Access and Computer Defaults (SPAD)