Wyłącz ostrzeżenie dotyczące zabezpieczeń dołączania programu Visual Studio podczas debugowania usług IIS


160

W przypadku korzystania z programu Visual Studio 2008 lub 2010 za każdym razem, gdy dołączasz do programu IIS w3wp.exe, pojawia się ostrzeżenie o zabezpieczeniach załączania,

Jak to wyłączyć?

Fajnie byłoby wiedzieć również, jak trzymać go przyczepionego na dłużej, ponieważ po pewnym czasie wydaje się, że minie.

Btw: Dodałem to jako komentarz do odpowiedzi poniżej, pierwszą rzeczą, którą zrobiłem, było wypróbowanie artykułu msdn http://msdn.microsoft.com/en-us/library/ms241736.aspx, ale to nie działa.


1
To działało do niedawna, w VS2015 - zdecydowanie mam zamknięte wszystkie instancje VS i klucz jest ustawiony, ale ostrzeżenie zaczęło się ponownie pojawiać.
fastmultiplication

Odpowiedzi:


231

Znaleziono również w artykule wspomnianym przez Tzury, ale podsumowując odpowiedzi w tym wątku:

upewnij się, że program Visual Studio nie działa podczas zmiany klucza rejestru, w przeciwnym razie zostanie on zastąpiony przy zamknięciu starą wartością

Zmień (lub utwórz) następujący klucz rejestru na 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

W przypadku VS2015 może być konieczne utworzenie klucza rejestru, o którym mowa powyżej.

  1. Upewnij się, że program Visual Studio nie jest uruchomiony, i otwórz Edytor rejestru.
  2. Przejdź do HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, kliknij prawym przyciskiem myszy i utwórz nowy DWORD:
    • Imię: DisableAttachSecurityWarning
    • Wartość: 1.

Aktualizacja: Jeśli nie chcesz otwierać programu regedit, zapisz tę treść jako plik * .reg i uruchom go (importuje klucze dla wszystkich wersji VS niższych niż VS2017).

Visual Studio 2017

Konfiguracja jest zapisywana w prywatnej lokalizacji rejestru, zobacz tę odpowiedź: https://stackoverflow.com/a/41122603/67910

W przypadku VS 2017 zapisz tę treść jako plik * .ps1 i uruchom jako admin lub skopiuj i wklej następujący kod w pliku 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
Dla VS2012 klucz to HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej

17
@ImranRizvi musisz się upewnić, że nie działa podczas zmiany rejestru, w przeciwnym razie zostanie po prostu nadpisany przy wyjściu ze starą wartością
Wiebe Tijsma

4
a co z VS 2017? W ogóle brakuje klucza Debugger (brakuje większości z nich)
Adaptabi,

4
Wygląda na to, że program Visual Studio 2017 zachowuje rejestr lokalny, więc musisz zmienić ten plik, a nie rejestr globalny. Rozwiązałem problem z dołączaniem ostrzeżenia o zabezpieczeniach po prostu edytując ten lokalny plik rejestru. Przeczytaj tę odpowiedź, aby uzyskać więcej wyjaśnień: stackoverflow.com/a/41122603/692665
Ceridan

1
@TravisK, w zasadzie nie masz tego klucza domyślnie, a ta sytuacja oznacza, że ​​ten klucz ma wartość równą zero. W twoim przypadku powinieneś ręcznie dodać nowy DWORD z kluczem DisableAttachSecurityWarning i Value równa się 1 do sekcji Debugger. Kiedy skończysz, po prostu wyładuj prywatny rejestr, a teraz możesz uruchomić MSVS i przetestować go.
Ceridan

13

Ustawienie rejestru działa; jednak musisz upewnić się, że ustawiłeś go w 32-bitowej piaskownicy rejestru dla VS2005 / 2008, używając 32-bitowego regedit.exe w programie %windir%\SysWOW64\lub dodając go pod HKLM\Software\Wow6432Node\.... Utworzyłem skrypt .reg, który po prostu dodaje go do obu:

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

Po prostu zmień wersję na 8.0 dla 2005, 10.0 dla 2010 itd.

UWAGA: wydaje się, że regedit w systemie Windows 7 chce zapisywać pliki .reg jako UTF16-LE, więc jeśli zapiszesz go w pliku .reg, pamiętaj, że musisz to zrobić.


8

Udało mi się to zrobić w systemie Windows 7. Najpierw zmieniłem wartość rejestru, a VS2008 nadal był otwarty. Następnie zamknąłem go i odświeżyłem edytor rejestru i zauważyłem, że wartość została zresetowana do 0. Następnie zmieniłem ją z powrotem na 1 i uruchomiłem VS2008. Teraz działa dobrze. Próbowałem zamknąć VS2008 i otworzyć go z powrotem, a wartość rejestru pozostaje 1. Dziękujemy za pomoc


7

Inne odpowiedzi w tym poście zawierają właściwe informacje, ale miałem problemy z ich uruchomieniem, więc jest to próba bardzo wyraźnej odpowiedzi. Te instrukcje działały w przypadku programu Visual Studio 2010 działającego w systemie Windows 7 Ultimate w wersji 64-bitowej.

  • Upewnij się, że żadne wystąpienia programu Visual Studio nie są uruchomione (użyj menedżera zadań, aby sprawdzić, czy plik devenv.exe )
  • Dodaj wartość rejestru DWORD DisableAttachSecurityWarning do HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger i ustaw wartość na 1 . W przypadku programu Visual Studio 2008 zamień XX na 9.0 , na 2010 użyj 10.0

Powodem, dla którego starałem się to uruchomić, było to, że próbowałem tego za pomocą HKEY_LOCAL_MACHINE zamiast HKEY_CURRENT_USER. Musiałem skorzystać z Process Monitor i trochę filtrowania na devenv, aby zidentyfikować mój błąd. Podejrzewam, że wartość HKLM ma wpływ tylko wtedy, gdy zostanie ustawiona przed pierwszym otwarciem programu Visual Studio.

Wszystkie otwarte wystąpienia programu Visual Studio nadpiszą zmiany, gdy zostaną zamknięte, i tylko nowe wystąpienia będą w każdym przypadku odbierać ustawienie.

O ile wiem, korzystanie z rejestru Wow6432Node wydaje się niepotrzebne. Poniższe polecenia programu PowerShell zastosują kroki dla programu 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

Możesz zmienić tożsamość iis AppPool na rzeczywistego użytkownika systemu Windows, jeśli jest to komputer lokalny.


1
Niedawno ugryzła mnie ta „funkcja”, której wcześniej nie widziałem, kiedy Twoja odpowiedź uświadomiła mi, że to dlatego, że właśnie przełączyłem się z rzeczywistego konta użytkownika na aplikację.
drzaus


4

Nie jest to bezpośrednia odpowiedź na pytanie, ale omija komunikat bezpieczeństwa, a także zapewnia szybszy sposób na dołączenie do wcześniej załączonego procesu:

  • zainstaluj rozszerzenie Reattach
  • dołącz za pomocą Dołącz ponownie, a wiadomość zostanie pominięta
  • ponowne dołączenie (Ctrl-R + Ctrl- [1-5]) do poprzedniego procesu ma tę samą korzyść

3

Wariant Powershell ... zastąp $vsversionwersją, do której chcesz go zastosować.

Uwaga : zapisz swoją pracę przed uruchomieniem tego. Wszystkie uruchomione instancje VS zostaną zatrzymane. Jeśli nie zakończysz otwartych instancji VS - wartość nie zostanie zachowana.

$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

więc jedyną rzeczą, która działałaby dla mnie z Visual Studio 2010 na x64 / Win7, jest aktualizacja obu węzłów, w tym 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

PowerShell zmienność w oparciu o istniejące odpowiedzi od SliverNinja i Martin Hollingsworth. Zostało to przetestowane w programie Visual Studio 2015 w środowisku win7 / x64 . Skrypt poprosi Cię o zamknięcie programu Visual Studio, jeśli jest uruchomiony (nie będzie próbował go zabić).

$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!"
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.