Desactive la advertencia de seguridad de Visual Studio Attach cuando depure IIS


160

Cuando usa Visual Studio 2008 o 2010, cada vez que se conecta a IIS w3wp.exe obtiene una Advertencia de seguridad de conexión,

¿Cómo cambias esto?

Sería genial saber también, cómo mantenerlo conectado por un tiempo prolongado, ya que esto parece agotar el tiempo después de un tiempo.

Por cierto: agregué esto como un comentario a la respuesta a continuación, lo primero que hice fue probar el artículo de msdn http://msdn.microsoft.com/en-us/library/ms241736.aspx pero eso no funciona.


1
Esto funcionó hasta hace poco, en VS2015: definitivamente tengo todas las instancias de VS cerradas, y la clave está configurada, pero la advertencia comenzó a aparecer nuevamente.
Fastmultiplication

Respuestas:


231

También se encuentra en el artículo mencionado por Tzury, pero para resumir las respuestas en este hilo:

asegúrese de que Visual Studio no se esté ejecutando al cambiar la clave del registro o se sobrescribirá al salir con el valor anterior

Cambie (o cree) la siguiente clave de registro a 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

Para VS2015, es posible que deba crear la clave de registro mencionada anteriormente.

  1. Asegúrese de que Visual Studio no se esté ejecutando y abra el Editor del registro.
  2. Navegue hasta HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, haga clic derecho y cree un nuevo DWORD:
    • Nombre: DisableAttachSecurityWarning
    • Valor: 1.

Actualización: si no desea abrir regedit, guarde esta esencia como un archivo * .reg y ejecútelo (importa las claves para todas las versiones VS anteriores a VS2017).

Visual Studio 2017

La configuración se guarda en una ubicación de registro privada, consulte esta respuesta: https://stackoverflow.com/a/41122603/67910

Para VS 2017 , guarde esta esencia como un archivo * .ps1 y ejecútelo como administrador, o copie y pegue el siguiente código en un archivo 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
Para VS2012, la clave es HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej

17
@ImranRizvi necesita asegurarse de que no se esté ejecutando mientras realiza el cambio de registro de todos modos, de lo contrario, se sobrescribirá a la salida con el valor anterior
Wiebe Tijsma

44
¿Qué pasa con VS 2017? Falta la clave del depurador (falta la mayoría de ellos)
Adaptabi

44
Parece que Visual Studio 2017 mantiene un registro local, por lo que debe cambiar este archivo y no el registro global. Solucioné un problema con Attach Security Warning simplemente editando este archivo de registro local. Lea esta respuesta para obtener más explicaciones: stackoverflow.com/a/41122603/692665
Ceridan

1
@TravisK, básicamente no tiene esta clave por defecto y esta situación es igual a tener esta clave con un valor igual a cero. En su caso, debe agregar manualmente un nuevo DWORD con la clave DisableAttachSecurityWarning y Value igual a 1 en la sección Debugger. Cuando haya terminado, simplemente descargue el registro privado y ahora puede ejecutar su MSVS y probarlo.
Ceridan

13

La configuración del registro funciona; sin embargo, debe asegurarse de configurarlo en el entorno limitado de registro de 32 bits para VS2005 / 2008 utilizando el regedit.exe de 32 bits %windir%\SysWOW64\o agregándolo debajo HKLM\Software\Wow6432Node\.... Creé un script .reg que simplemente lo agrega a ambos:

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

Simplemente cambie la versión a 8.0 para 2005, 10.0 para 2010, etc.

NOTA: regedit en Windows 7 parece querer archivos .reg guardados como UTF16-LE, por lo que si lo guarda en un archivo .reg, tenga en cuenta que debe hacerlo.


8

Pude hacerlo funcionar en Windows 7. Primero cambié el valor del registro con VS2008 todavía abierto. Luego lo cerré y actualicé el editor de registro y noté que el valor se restableció a 0. Luego lo cambié a 1 y comencé VS2008. Ahora funciona bien. He intentado cerrar VS2008 y volver a abrirlo y el valor del registro se mantiene 1. Gracias por su ayuda


7

Las otras respuestas en esta publicación contienen la información correcta, pero tuve problemas para que funcione, así que este es un intento de hacer que la respuesta sea muy explícita. Estas instrucciones funcionaron para Visual Studio 2010 que se ejecuta en Windows 7 Ultimate 64-Bit.

  • Asegúrese de que no se estén ejecutando instancias de Visual Studio (use el administrador de tareas para verificar si hay devenv.exe )
  • Agregue el valor de registro DWORD DisableAttachSecurityWarning a HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger y establezca el valor en 1 . Para Visual Studio 2008, reemplace XX con 9.0 , para 2010 use 10.0

La razón por la que luché para que esto funcionara fue porque estaba intentando usar HKEY_LOCAL_MACHINE en lugar de HKEY_CURRENT_USER. Tuve que recurrir al uso de Process Monitor y un poco de filtrado en devenv para identificar mi error. Sospecho que el valor HKLM solo tiene algún efecto si se establece antes de abrir Visual Studio por primera vez.

Cualquier instancia abierta de Visual Studio sobrescribirá sus cambios cuando se cierren y solo las nuevas instancias recogerán la configuración en cualquier caso.

El uso del registro Wow6432Node parece ser innecesario por lo que puedo decir. Los siguientes comandos de Powershell aplicarán los pasos para 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

Puede cambiar la identidad de iis AppPool a su usuario real de Windows, si es una máquina local.


1
Recientemente me "mordió" esta "característica", que no había visto antes, cuando su respuesta me hizo darme cuenta de que es porque acabo de cambiar de una cuenta de usuario real a la apppoolidentity.
drzaus


4

Esta no es una respuesta directa a la pregunta, pero evita el mensaje de seguridad y también proporciona una forma más rápida de adjuntar a un proceso adjunto previamente:

  • instalar la extensión Reattach
  • adjuntar usando Volver a adjuntar y el mensaje se omite
  • volver a adjuntar (Ctrl-R + Ctrl- [1-5]) a un proceso anterior tiene el mismo beneficio

3

Variante de Powershell ... reemplácela $vsversioncon la versión a la que desea aplicarla.

Nota : Guarde su trabajo antes de ejecutar esto. Todas las instancias de VS en ejecución se detendrán. Si no finaliza las instancias de VS abiertas, el valor no se retendrá.

$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

Por lo tanto, lo único que me funcionaría con Visual Studio 2010 en x64 / Win7 es actualizar ambos nodos, incluido el 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

Un PowerShell variación basada en respuestas existentes de SliverNinja y Martin Hollingsworth. Esto se ha probado con Visual Studio 2015 en un entorno win7 / x64 . El script le pedirá que cierre Visual Studio si se está ejecutando (no intentará eliminarlo).

$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!"
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.