Désactiver l'avertissement de sécurité de Visual Studio Attach lors du débogage d'IIS

160

Lorsque vous utilisez Visual Studio 2008 ou 2010, chaque fois que vous vous connectez à IIS w3wp.exe, vous obtenez un avertissement de sécurité d'attachement,

Comment faites-vous cela?

Ce serait cool de savoir aussi comment le garder attaché pour s'attarder, car cela semble expirer après un certain temps.

Btw: J'ai ajouté ceci comme commentaire à la réponse ci-dessous, la première chose que j'ai faite a été d'essayer l'article msdn http://msdn.microsoft.com/en-us/library/ms241736.aspx mais cela ne fonctionne pas.

crise ronde
la source
1
Cela a fonctionné jusqu'à récemment, dans VS2015 - toutes les instances VS sont définitivement fermées et la clé est définie, mais l'avertissement a recommencé à apparaître.
fastmultiplication

Réponses:

231

On trouve également dans l'article mentionné par Tzury, mais pour résumer les réponses dans ce fil:

assurez-vous que Visual Studio n'est pas en cours d'exécution lors de la modification de la clé de registre ou il sera écrasé à la sortie avec l'ancienne valeur

Remplacez (ou créez) la clé de registre suivante par 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

Pour VS2015, vous devrez peut-être créer la clé de registre référencée ci-dessus.

  1. Assurez-vous que Visual Studio n'est pas en cours d'exécution et ouvrez l'Éditeur du Registre.
  2. Accédez à HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, cliquez avec le bouton droit de la souris et créez un nouveau DWORD:
    • Nom: DisableAttachSecurityWarning
    • Valeur: 1.

Mise à jour: Si vous ne souhaitez pas ouvrir regedit, enregistrez ce contenu dans un fichier * .reg et exécutez-le (importe les clés pour toutes les versions de VS inférieures à VS2017).

Visual Studio 2017

La configuration est enregistrée dans un emplacement de registre privé, voir cette réponse: https://stackoverflow.com/a/41122603/67910

Pour VS 2017 , enregistrez ce contenu dans un fichier * .ps1 et exécutez-le en tant qu'administrateur, ou copiez et collez le code suivant dans un fichier 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
}
Wiebe Tijsma
la source
10
Pour VS2012, la clé est HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej
17
@ImranRizvi, vous devez vous assurer qu'il n'est pas en cours d'exécution lors de la modification du registre de toute façon, sinon il sera simplement écrasé à la sortie avec l'ancienne valeur
Wiebe Tijsma
4
qu'en est-il de VS 2017? La clé du débogueur est absente du tout (la plupart d'entre elles sont manquantes)
Adaptabi
4
On dirait que Visual Studio 2017 conserve le registre local, vous devez donc modifier ce fichier et non le registre global. J'ai résolu le problème avec Attach Security Warning en modifiant simplement ce fichier de registre local. Lisez cette réponse pour plus d'explications: stackoverflow.com/a/41122603/692665
Ceridan
1
@TravisK, fondamentalement, vous n'avez pas cette clé par défaut et cette situation équivaut à avoir cette clé avec une valeur égale à zéro. Dans votre cas, vous devez ajouter manuellement un nouveau DWORD avec la clé DisableAttachSecurityWarning et la valeur égale à 1 dans la section Débogueur. Lorsque vous avez terminé, déchargez simplement le registre privé et vous pouvez maintenant exécuter votre MSVS et le tester.
Ceridan
13

Le paramètre de registre fonctionne; cependant, vous devez vous assurer de le définir dans le sandbox du registre 32 bits pour VS2005 / 2008 en utilisant le regedit.exe 32 bits dans %windir%\SysWOW64\ou en l'ajoutant sous HKLM\Software\Wow6432Node\.... J'ai créé un script .reg qui l'ajoute simplement aux deux:

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

Changez simplement la version en 8.0 pour 2005, 10.0 pour 2010, etc.

REMARQUE: regedit sous Windows 7 semble vouloir que les fichiers .reg soient enregistrés au format UTF16-LE, donc si vous l'enregistrez dans un fichier .reg, sachez que vous devez le faire.

Chris R. Donnelly
la source
8

J'ai pu le faire fonctionner sur Windows 7. J'ai d'abord changé la valeur de registre avec VS2008 toujours ouvert. Je l'ai ensuite fermé et actualisé l'éditeur de registre et j'ai remarqué que la valeur était réinitialisée à 0. Je l'ai ensuite remise à 1 et j'ai démarré VS2008. Cela fonctionne maintenant très bien. J'ai essayé de fermer VS2008 et de le rouvrir et la valeur de registre reste 1. Merci pour votre aide

Eric Villemure
la source
7

Les autres réponses de cet article contiennent les bonnes informations, mais j'ai eu du mal à les faire fonctionner, c'est donc une tentative de rendre la réponse très explicite. Ces instructions ont fonctionné pour Visual Studio 2010 s'exécutant sur Windows 7 Ultimate 64 bits.

  • Assurez-vous qu'aucune instance de Visual Studio n'est en cours d'exécution (utilisez le gestionnaire de tâches pour rechercher devenv.exe )
  • Ajoutez la valeur de Registre DWORD DisableAttachSecurityWarning à HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger et définissez la valeur sur 1 . Pour Visual Studio 2008, remplacez XX par 9.0 , pour 2010, utilisez 10.0

La raison pour laquelle j'ai eu du mal à faire fonctionner cela est que j'essayais ceci en utilisant HKEY_LOCAL_MACHINE au lieu de HKEY_CURRENT_USER. J'ai dû recourir à l'utilisation de Process Monitor et un peu de filtrage sur devenv pour identifier mon erreur. Je soupçonne que la valeur HKLM n'a d'effet que si elle est définie avant d'ouvrir Visual Studio pour la première fois.

Toutes les instances ouvertes de Visual Studio remplaceront vos modifications lorsqu'elles sont fermées et seules les nouvelles instances reprendront le paramètre dans tous les cas.

Pour autant que je sache, l'utilisation du registre Wow6432Node semble inutile. Les commandes Powershell suivantes appliqueront les étapes de 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
Martin Hollingsworth
la source
6

Vous pouvez changer l'identité iis AppPool en votre utilisateur Windows réel, s'il s'agit d'une machine locale.

Tóth Zoltán
la source
1
J'ai récemment été mordu par cette "fonctionnalité", que je n'avais jamais vue auparavant, lorsque votre réponse m'a fait comprendre que c'était parce que je venais de passer d' un compte utilisateur réel à l'apppoolidentity.
drzaus
4

votre réponse est disponible sur http://msdn.microsoft.com/en-us/library/ms241736.aspx

Si vous déboguez un scénario légitime qui provoque l'affichage de cet avertissement et que vous souhaitez le supprimer, il existe un paramètre de registre qui vous permet de le faire. N'oubliez pas de réactiver l'avertissement une fois le scénario terminé.

Tzury Bar Yochay
la source
4

Ce n'est pas une réponse directe à la question, mais cela contourne le message de sécurité et fournit également un moyen plus rapide de se joindre à un processus précédemment attaché:

  • installer l' extension Reattach
  • joindre à l'aide de Reattach et le message est contourné
  • attacher à nouveau (Ctrl-R + Ctrl- [1-5]) à un processus précédent a le même avantage
Alexei
la source
3

Variante PowerShell ... remplacez-la $vsversionpar la version à laquelle vous souhaitez l'appliquer.

Remarque : enregistrez votre travail avant de l'exécuter. Toutes les instances VS en cours d'exécution seront arrêtées. Si vous ne mettez pas fin aux instances VS ouvertes, la valeur ne sera pas conservée.

$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
SliverNinja - MSFT
la source
2

donc, la seule chose qui fonctionnerait pour moi avec Visual Studio 2010 sur x64 / Win7 est de mettre à jour les deux nœuds, y compris le 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
Shawn Cicoria
la source
2

Une extension Visual Studio est disponible pour VS2015 et VS2017: «Attach To All The Things» :

entrez la description de l'image ici

Vous pouvez lier "Attach To IIS" à n'importe quel accord clé que vous aimez en utilisant le processus habituel.

Marc Gravell
la source
0

Une variante PowerShell basée sur les réponses existantes de SliverNinja et Martin Hollingsworth. Cela a été testé avec Visual Studio 2015 sur un environnement win7 / x64 . Le script vous demandera de fermer Visual Studio s'il est en cours d'exécution (n'essaiera pas de le tuer).

$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!"
}
Cebe
la source