Disattiva gli avvisi di sicurezza di Visual Studio Attach durante il debug di IIS


160

Quando si utilizza Visual Studio 2008 o 2010, ogni volta che si collega a IIS w3wp.exe viene visualizzato un avviso di sicurezza di collegamento,

Come si trasforma questo?

Sarebbe bello sapere anche come tenerlo attaccato per indugiare, poiché questo sembra scadere dopo un po '.

A proposito: ho aggiunto questo come commento alla risposta di seguito, la prima cosa che ho fatto è stato provare l'articolo msdn http://msdn.microsoft.com/en-us/library/ms241736.aspx ma non funziona.


1
Questo ha funzionato fino a poco tempo fa, in VS2015: ho sicuramente chiuso tutte le istanze VS e la chiave è impostata, ma l'avviso ha ripreso a comparire.
fastmultiplication

Risposte:


231

Anche trovato nell'articolo citato da Tzury, ma per riassumere le risposte in questo thread:

assicurarsi che Visual Studio non sia in esecuzione quando si modifica la chiave del Registro di sistema o verrà sovrascritto all'uscita con il vecchio valore

Modificare (o creare) la seguente chiave di registro su 1 :

Visual Studio 2008 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger\DisableAttachSecurityWarning

Visual Studio 2010 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger\DisableAttachSecurityWarning

Visual Studio 2012 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\Debugger\DisableAttachSecurityWarning

Visual Studio 2013 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\Debugger\DisableAttachSecurityWarning

Visual Studio 2015 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger\DisableAttachSecurityWarning

Per VS2015, potrebbe essere necessario creare la chiave di registro a cui si fa riferimento in precedenza.

  1. Assicurarsi che Visual Studio non sia in esecuzione e aprire l'Editor del Registro di sistema.
  2. Passare a HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, fare clic con il tasto destro e creare un nuovo DWORD:
    • Nome: DisableAttachSecurityWarning
    • Valore: 1.

Aggiornamento: se non si desidera aprire regedit, salvare questa sintesi come file * .reg ed eseguirlo (importa le chiavi per tutte le versioni VS inferiori a VS2017).

Visual Studio 2017

La configurazione viene salvata in una posizione del registro privato, vedere questa risposta: https://stackoverflow.com/a/41122603/67910

Per VS 2017 , salva questo gist come file * .ps1 ed eseguilo come admin, oppure copia e incolla il seguente codice in un file ps1:

#IMPORTANT: Must be run as admin

dir $env:LOCALAPPDATA\Microsoft\VisualStudio\15.* | % {
    #https://stackoverflow.com/a/41122603
    New-PSDrive HKU Registry HKEY_USERS

    reg load 'HKU\VS2017PrivateRegistry\' $_\privateregistry.bin

    $BasePath='HKU:\VS2017PrivateRegistry\Software\Microsoft\VisualStudio'

    $keysResult=dir $BasePath
    $keysResult | ? {$_.Name -match '\\\d+\.\d+_[^_]+$'} | % {
        $keyName = $_.Name -replace 'HKEY_USERS','HKU:'
        New-ItemProperty -Path $keyName\Debugger -Name DisableAttachSecurityWarning -Value 1
    }
    $keysResult.Handle.Close()    

    [gc]::collect()

    reg unload 'HKU\VS2017PrivateRegistry'

    Remove-PSDrive HKU
}

10
Per VS2012 la chiave è HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej

17
@ImranRizvi devi assicurarti che non sia in esecuzione durante la modifica del registro, altrimenti verrà sovrascritto all'uscita con il vecchio valore
Wiebe Tijsma

4
che dire di VS 2017? La chiave del debugger è mancante (la maggior parte di loro manca)
Adaptabi

4
Sembra che Visual Studio 2017 mantenga il registro locale, quindi è necessario modificare questo file e non il registro globale. Ho risolto il problema con Attach Security Warning semplicemente modificando questo file di registro locale. Leggi questa risposta maggiori spiegazioni: stackoverflow.com/a/41122603/692665
Ceridan

1
@TravisK, fondamentalmente non hai questa chiave di default e questa situazione equivale ad avere questa chiave con valore uguale a zero. Nel tuo caso dovresti aggiungere manualmente un nuovo DWORD con la chiave DisableAttachSecurityWarning e il valore è uguale a 1 alla sezione Debugger. Al termine, basta scaricare il registro privato e ora è possibile eseguire MSVS e testarlo.
Ceridan,

13

L'impostazione del registro funziona; tuttavia, è necessario assicurarsi di impostarlo nella sandbox del registro a 32 bit per VS2005 / 2008 utilizzando Regedit.exe a 32 bit %windir%\SysWOW64\o aggiungendolo in HKLM\Software\Wow6432Node\.... Ho creato uno script .reg che lo aggiunge semplicemente a entrambi:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger]
"DisableAttachSecurityWarning"=dword:00000001

[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Debugger]
"DisableAttachSecurityWarning"=dword:00000001

Basta cambiare la versione in 8.0 per il 2005, 10.0 per il 2010, ecc.

NOTA: regedit su Windows 7 sembra voler salvare i file .reg come UTF16-LE, quindi se lo si salva in un file .reg, tenere presente che è necessario farlo.


8

Sono stato in grado di farlo funzionare su Windows 7. Ho prima cambiato il valore del registro con VS2008 ancora aperto. L'ho chiuso, ho aggiornato l'editor del registro e ho notato che il valore è stato reimpostato su 0. L'ho modificato di nuovo su 1 e ho avviato VS2008. Ora funziona bene. Ho provato a chiudere VS2008 e riaprirlo e il valore del registro rimane 1. Grazie per l'aiuto


7

Le altre risposte in questo post contengono le informazioni giuste ma ho avuto problemi a farlo funzionare, quindi questo è un tentativo di rendere la risposta molto esplicita. Queste istruzioni hanno funzionato per Visual Studio 2010 in esecuzione su Windows 7 Ultimate a 64 bit.

  • Assicurarsi che non siano in esecuzione istanze di Visual Studio (utilizzare il task manager per verificare la presenza di devenv.exe )
  • Aggiungi il valore di registro DWORD DisableAttachSecurityWarning a HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger e imposta il valore su 1 . Per Visual Studio 2008 sostituire XX con 9.0 , per il 2010 utilizzare 10.0

Il motivo per cui ho faticato a farlo funzionare è che stavo provando questo usando HKEY_LOCAL_MACHINE invece di HKEY_CURRENT_USER. Ho dovuto ricorrere all'utilizzo di Process Monitor e un po 'di filtraggio su devenv per identificare il mio errore. Ho il sospetto che il valore HKLM abbia alcun effetto se viene impostato prima di aprire Visual Studio per la prima volta.

Qualsiasi istanza aperta di Visual Studio sovrascriverà le modifiche quando saranno chiuse e solo le nuove istanze rileveranno l'impostazione in ogni caso.

L'uso del registro Wow6432Node sembra non essere necessario per quanto ne so. I seguenti comandi Powershell applicheranno i passaggi per Visual Studio 2010.

Get-Process -Name devenv* | ForEach-Object { Stop-Process $_.Id }
New-ItemProperty -Path 'HKCU:\Software\Microsoft\VisualStudio\10.0\Debugger' -Name 'DisableAttachSecurityWarning' -Value 1 -PropertyType 'DWORD' -Force

6

È possibile modificare l'identità di iis AppPool per l'utente Windows corrente, se si tratta di un computer locale.


1
Sono stato recentemente morso da questa "caratteristica", che non avevo mai visto prima, quando la tua risposta mi ha fatto capire che è perché sono appena passato da un account utente effettivo all'apppoolidentity.
drzaus,

4

la tua risposta è disponibile all'indirizzo http://msdn.microsoft.com/en-us/library/ms241736.aspx

Se si esegue il debug di uno scenario legittimo che causa la visualizzazione di questo avviso e si desidera eliminarlo, esiste un'impostazione del Registro di sistema che consente di farlo. Ricordare di riattivare l'avviso dopo aver terminato lo scenario.


4

Questa non è una risposta diretta alla domanda, ma elude il messaggio di sicurezza e fornisce anche un modo più veloce per collegarsi a un processo precedentemente collegato:

  • installa l' estensione Reattach
  • allegare utilizzando Reattach e il messaggio viene ignorato
  • ricollegare (Ctrl-R + Ctrl- [1-5]) a un processo precedente ha lo stesso vantaggio

3

Variante Powershell ... sostituirla $vsversioncon la versione a cui si desidera applicarla.

Nota : salva il tuo lavoro prima di eseguirlo. Tutte le istanze VS in esecuzione verranno arrestate. Se non si terminano le istanze VS aperte, il valore non verrà mantenuto.

$vsversion = "12.0" # VS 2013 (optionally 11, 10, 9, etc.)
kill -name devenv # end any existing VS instances (required for persisting config change)
Get-ItemProperty -Path "HKCU:\Software\Microsoft\VisualStudio\$vsversion\Debugger" -Name DisableAttachSecurityWarning -ErrorAction SilentlyContinue # query value (ignore if not exists)
Set-ItemProperty -Path "HKCU:\Software\Microsoft\VisualStudio\$vsversion\Debugger" -Name DisableAttachSecurityWarning -Value 1 # assign value

2

quindi, l'unica cosa che funzionerebbe con me con Visual Studio 2010 su x64 / Win7 è aggiornare entrambi i nodi, incluso il Wow6432Node.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger]
"DisableAttachSecurityWarning"=dword:00000001

[HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\10.0\Debugger]
"DisableAttachSecurityWarning"=dword:00000001


0

Una variazione PowerShell basata sulle risposte esistenti di SliverNinja e Martin Hollingsworth. Questo è stato testato con Visual Studio 2015 su un ambiente win7 / x64 . Lo script ti chiederà di chiudere Visual Studio se è in esecuzione (non tenterà di ucciderlo).

$vsversion = "14.0" # VS 2015 (optionally 12, 11, 10, 9, etc...)
$disable = 1 # set to 0 to enable the warning message

# not using Get-Process here because powershell instance can be 64 bit and devenv is 32 bit
if (!(get-wmiobject win32_process -filter "name='devenv.exe'")) {
    # Create or (force) update the property
    New-ItemProperty -Path "HKCU:\Software\Microsoft\VisualStudio\$vsversion\Debugger" -Name DisableAttachSecurityWarning -Value $disable -PropertyType 'DWORD' -Force
    Write-Host Done!
}
else {
    Write-Error "Please close Visual Studio first!"
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.