Desativar o aviso de segurança do Visual Studio Attach ao depurar o IIS


160

Ao usar o Visual Studio 2008 ou 2010, toda vez que você se conecta ao IIS w3wp.exe, recebe um aviso de segurança Anexar,

Como você vira isso?

Seria legal saber também, como mantê-lo ligado por mais tempo, pois isso parece expirar depois de um tempo.

Btw: adicionei isso como comentário à resposta abaixo, a primeira coisa que fiz foi tentar o artigo msdn http://msdn.microsoft.com/en-us/library/ms241736.aspx, mas isso não funciona.


1
Isso funcionou até recentemente, no VS2015 - eu definitivamente tenho todas as instâncias do VS fechadas e a chave está definida, mas o aviso começou a aparecer novamente.
fastmultiplication

Respostas:


231

Também encontrado no artigo mencionado por Tzury, mas para resumir as respostas neste tópico:

verifique se o Visual Studio não está em execução ao alterar a chave do Registro ou será substituído na saída com o valor antigo

Altere (ou crie) a seguinte chave do Registro para 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 o VS2015, pode ser necessário criar a Chave do Registro mencionada acima.

  1. Verifique se o Visual Studio não está em execução e abra o Editor do Registro.
  2. Navegue para HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, clique com o botão direito do mouse e crie um novo DWORD:
    • Nome: DisableAttachSecurityWarning
    • Valor: 1.

Update: Se você não quiser abrir regedit, salvar esta essência como um arquivo reg * e executá-lo (importações as chaves para todas as versões VS menor do que VS2017).

Visual Studio 2017

A configuração é salva em um local de registro privado, consulte esta resposta: https://stackoverflow.com/a/41122603/67910

Para VS 2017 , salvar esta essência como um arquivo * .ps1 e executá-lo como administrador, ou copie e cole o seguinte código em um arquivo 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 o VS2012, a chave é HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej

17
@ImranRizvi você precisa se certificar de que não está funcionando ao mesmo tempo que a alteração do registro de qualquer maneira, caso contrário ele irá apenas ser substituído na saída com o valor antigo
Wiebe Tijsma

4
e o VS 2017? A chave Debugger está faltando em todos (a maioria deles estão faltando)
Adaptabi

4
Parece que o Visual Studio 2017 mantém o registro local, portanto, você deve alterar esse arquivo e não o registro global. Corrigi o problema com o Attach Security Warning apenas editando este arquivo de registro local. Leia esta resposta para obter mais explicações: stackoverflow.com/a/41122603/692665
Ceridan 21/03

1
@ TravisK, basicamente você não tem essa chave por padrão e essa situação é igual a ter essa chave com valor igual a zero. No seu caso, você deve adicionar manualmente um novo DWORD com a chave DisableAttachSecurityWarning e Value igual a 1 na seção Depurador. Quando terminar, basta descarregar o registro privado e agora você pode executar o MSVS e testá-lo.
Ceridan

13

A configuração do registro funciona; no entanto, você deve configurá-lo na caixa de proteção do Registro de 32 bits para o VS2005 / 2008 usando o regedit.exe de 32 bits %windir%\SysWOW64\ou adicionando-o em HKLM\Software\Wow6432Node\.... Eu criei um script .reg que simplesmente o adiciona 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

Basta alterar a versão para 8.0 para 2005, 10.0 para 2010, etc.

NOTA: o regedit no Windows 7 parece querer que os arquivos .reg sejam salvos como UTF16-LE; portanto, se você salvá-lo em um arquivo .reg, saiba que é necessário fazer isso.


8

Consegui fazê-lo funcionar no Windows 7. Primeiro alterei o valor do registro com o VS2008 ainda aberto. Em seguida, fechei e atualizei o editor de registro e notei que o valor foi redefinido para 0. Alterei novamente para 1 e iniciei o VS2008. Agora funciona bem. Tentei fechar o VS2008 e abri-lo novamente, e o valor do registro permanece 1. Obrigado pela sua ajuda


7

As outras respostas deste post contêm as informações corretas, mas tive problemas para fazê-las funcionar, portanto, é uma tentativa de tornar a resposta muito explícita. Essas instruções funcionaram para o Visual Studio 2010 em execução no Windows 7 Ultimate de 64 bits.

  • Verifique se nenhuma instância do Visual Studio está em execução (use o gerenciador de tarefas para verificar devenv.exe )
  • Adicione o valor do Registro DWORD DisableAttachSecurityWarning ao HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger e defina o valor como 1 . Para o Visual Studio 2008, substitua XX por 9.0 , para 2010 use 10.0

A razão pela qual lutei para conseguir esse trabalho foi que estava tentando fazer isso usando HKEY_LOCAL_MACHINE em vez de HKEY_CURRENT_USER. Eu tive que recorrer ao Process Monitor e um pouco de filtragem no devenv para identificar meu erro. Eu suspeito que o valor HKLM só tenha efeito se for definido antes da abertura do Visual Studio pela primeira vez.

Quaisquer instâncias abertas do Visual Studio substituirão suas alterações quando elas forem fechadas e apenas novas instâncias escolheriam a configuração em qualquer caso.

O uso do registro Wow6432Node parece ser desnecessário até onde sei. Os seguintes comandos do PowerShell aplicarão as etapas do 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

Você pode alterar a identidade do iis AppPool para o usuário real do Windows, se for uma máquina local.


1
Recentemente, fui mordido por esse "recurso", que eu nunca tinha visto antes, quando sua resposta me fez perceber que é porque acabei de mudar de uma conta de usuário real para a apppoolidentity.
Drzaus


4

Esta não é uma resposta direta à pergunta, mas contorna a mensagem de segurança e também fornece uma maneira mais rápida de se conectar a um processo anexado anteriormente:

  • instalar extensão Reattach
  • anexar usando Reattach e a mensagem é ignorada
  • reconectar (Ctrl-R + Ctrl- [1-5]) a um processo anterior tem o mesmo benefício

3

Variante do PowerShell ... substitua $vsversionpela versão em que você deseja aplicá-lo.

Nota : Salve seu trabalho antes de executar isso. Todas as instâncias do VS em execução serão interrompidas. Se você não encerrar instâncias abertas do VS - o valor não será retido.

$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

portanto, a única coisa que funcionaria para mim no Visual Studio 2010 no x64 / Win7 é atualizar os dois nós, incluindo o 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

2

Uma extensão do Visual Studio está disponível para o VS2015 e o VS2017: "Anexar a todas as coisas" :

insira a descrição da imagem aqui

Você pode vincular "Attach To IIS" a qualquer acorde de teclas que desejar usando o processo usual.


0

Uma variação do PowerShell com base nas respostas existentes de SliverNinja e Martin Hollingsworth. Isso foi testado com o Visual Studio 2015 em um ambiente win7 / x64 . O script solicitará que você feche o Visual Studio se estiver em execução (não tente matá-lo).

$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!"
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.