Matikan Visual Studio Lampirkan peringatan keamanan saat men-debug IIS

160

Saat menggunakan Visual Studio 2008 atau 2010, setiap kali Anda melampirkan ke IIS w3wp.exe Anda mendapatkan Peringatan Keamanan Lampirkan,

Bagaimana Anda mengubah ini?

Akan sangat keren untuk mengetahui juga, bagaimana membuatnya tetap melekat untuk berlama-lama, karena ini sepertinya akan keluar setelah beberapa saat.

Btw: Saya menambahkan ini sebagai komentar pada jawaban di bawah ini, hal pertama yang saya lakukan adalah mencoba artikel msdn http://msdn.microsoft.com/en-us/library/ms241736.aspx tetapi itu tidak berhasil.

krisis bundar
sumber
1
Ini bekerja sampai saat ini, di VS2015 - Saya pasti memiliki semua instance VS ditutup, & kuncinya diatur, tetapi peringatan mulai bermunculan lagi.
aplikasi cepat

Jawaban:

231

Juga ditemukan dalam artikel yang disebutkan oleh Tzury, tetapi untuk meringkas jawaban di utas ini:

pastikan Visual Studio tidak berjalan ketika mengubah kunci registri atau itu akan ditimpa saat keluar dengan nilai lama

Ubah (atau buat) kunci registri berikut ke 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

Untuk VS2015, Anda mungkin perlu membuat Kunci Registri yang dirujuk di atas.

  1. Pastikan Visual Studio tidak berjalan, dan buka Registry Editor.
  2. Arahkan ke HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, klik kanan dan buat yang baru DWORD:
    • Nama: DisableAttachSecurityWarning
    • Nilai: 1.

Pembaruan: Jika Anda tidak ingin membuka regedit, simpan inti ini sebagai file * .reg dan jalankan (impor kunci untuk semua versi VS yang lebih rendah dari VS2017).

Visual Studio 2017

Konfigurasi disimpan di lokasi registri pribadi, lihat jawaban ini: https://stackoverflow.com/a/41122603/67910

Untuk VS 2017 , simpan inti ini sebagai file * .ps1 dan jalankan sebagai admin, atau salin dan tempel kode berikut dalam 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
}
Wiebe Tijsma
sumber
10
Untuk VS2012 kuncinya adalah HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej
17
@ImranRizvi Anda perlu memastikan itu tidak berjalan saat membuat perubahan registri, jika tidak, itu hanya akan ditimpa saat keluar dengan nilai lama
Wiebe Tijsma
4
bagaimana dengan VS 2017? Kunci Debugger sama sekali tidak ada (kebanyakan dari mereka tidak ada)
Adaptabi
4
Sepertinya Visual Studio 2017 menyimpan registri lokal, jadi Anda harus mengubah file ini dan bukan registri global. Saya memperbaiki masalah dengan Melampirkan Peringatan Keamanan hanya mengedit file registri lokal ini. Baca jawaban ini untuk penjelasan lebih lanjut: stackoverflow.com/a/41122603/692665
Ceridan
1
@ TravisK, pada dasarnya Anda tidak memiliki kunci ini secara default dan situasi ini sama dengan memiliki kunci ini dengan nilai sama dengan nol. Dalam kasus Anda, Anda harus secara manual menambahkan DWORD baru dengan kunci DisableAttachSecurityWarning dan Nilai sama dengan 1 ke bagian Debugger. Setelah selesai, cukup bongkar registri pribadi dan sekarang Anda dapat menjalankan MSVS dan mengujinya.
Ceridan
13

Pengaturan registri tidak berfungsi; Namun, Anda harus memastikan bahwa Anda mengaturnya di sandbox registri 32-bit untuk VS2005 / 2008 dengan menggunakan regedit.exe 32-bit di %windir%\SysWOW64\atau menambahkannya di bawah HKLM\Software\Wow6432Node\.... Saya membuat skrip .reg yang hanya menambahkannya ke keduanya:

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

Ubah saja versinya menjadi 8.0 untuk 2005, 10.0 untuk 2010, dll.

CATATAN: regedit pada Windows 7 tampaknya menginginkan file .reg disimpan sebagai UTF16-LE, jadi jika Anda menyimpannya ke file .reg, perlu diketahui bahwa Anda harus melakukannya.

Chris R. Donnelly
sumber
8

Saya dapat membuatnya Bekerja pada Windows 7. Saya pertama kali mengubah nilai registri dengan VS2008 masih terbuka. Saya kemudian menutupnya dan me-refresh registry editor dan memperhatikan bahwa nilainya di reset ke 0. Saya kemudian mengubahnya kembali ke 1 dan mulai VS2008. Sekarang berfungsi dengan baik. Saya telah mencoba untuk menutup VS2008 dan membukanya kembali dan nilai registri tetap 1. Terima kasih atas bantuan Anda

Eric Villemure
sumber
7

Jawaban lain dalam posting ini berisi informasi yang benar tetapi saya mempunyai masalah untuk membuatnya bekerja sehingga ini merupakan upaya untuk membuat jawabannya sangat eksplisit. Petunjuk ini berfungsi untuk Visual Studio 2010 yang berjalan pada Windows 7 Ultimate 64-Bit.

  • Pastikan tidak ada instance Visual Studio yang berjalan (Gunakan task manager untuk memeriksa devenv.exe )
  • Tambahkan nilai registri DWORD DisableAttachSecurityWarning ke HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger dan tetapkan nilainya menjadi 1 . Untuk Visual Studio 2008 ganti XX dengan 9.0 , untuk 2010 gunakan 10.0

Alasan mengapa saya berjuang agar ini berfungsi adalah karena saya mencoba menggunakan HKEY_LOCAL_MACHINE alih-alih HKEY_CURRENT_USER. Saya harus menggunakan Proses Monitor dan sedikit penyaringan pada devenv untuk mengidentifikasi kesalahan saya. Saya menduga nilai HKLM hanya memiliki pengaruh jika diatur sebelum Anda membuka Visual Studio untuk pertama kalinya.

Instance terbuka dari Visual Studio akan menimpa perubahan Anda ketika ditutup dan hanya instans baru yang akan mengambil pengaturan dalam hal apa pun.

Penggunaan registri Wow6432Node tampaknya tidak perlu sejauh yang saya tahu. Perintah Powershell berikut ini akan menerapkan langkah-langkah untuk 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
sumber
6

Anda dapat mengubah identitas AppPool iis menjadi pengguna windows Anda yang sebenarnya, jika itu adalah mesin lokal.

Tóth Zoltán
sumber
1
Baru-baru ini saya digigit oleh "fitur" ini, yang belum pernah saya lihat sebelumnya, ketika jawaban Anda membuat saya sadar itu karena saya baru saja beralih dari akun pengguna yang sebenarnya ke apppoolidentity.
drzaus
4

jawaban Anda tersedia di http://msdn.microsoft.com/en-us/library/ms241736.aspx

Jika Anda men-debug skenario yang sah yang menyebabkan peringatan ini muncul, dan ingin menekannya, ada pengaturan registri yang memungkinkan Anda untuk melakukan ini. Ingatlah untuk mengaktifkan kembali peringatan setelah Anda selesai dengan skenario.

Tzury Bar Yochay
sumber
4

Ini bukan jawaban langsung untuk pertanyaan, tetapi menghindari pesan keamanan dan juga menyediakan cara yang lebih cepat untuk melampirkan ke proses yang sebelumnya dilampirkan:

  • instal pasang kembali ekstensi
  • lampirkan menggunakan Reattach dan pesan dilewati
  • melampirkan kembali (Ctrl-R + Ctrl- [1-5]) ke proses sebelumnya memiliki manfaat yang sama
Alexei
sumber
3

Varian Powershell ... ganti $vsversiondengan versi yang Anda inginkan.

Catatan : Simpan pekerjaan Anda sebelum menjalankan ini. Semua instance VS yang berjalan akan dihentikan. Jika Anda tidak mengakhiri instance VS yang terbuka - nilainya tidak akan dipertahankan.

$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
sumber
2

jadi, satu-satunya hal yang akan bekerja untuk saya dengan Visual Studio 2010 pada x64 / Win7 adalah memperbarui kedua node, termasuk 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
sumber
2

Ekstensi Visual Studio tersedia untuk VS2015 dan VS2017: "Lampirkan ke Semua Hal" :

masukkan deskripsi gambar di sini

Anda dapat mengikat "Lampirkan pada IIS" pada kunci kunci apa pun yang Anda suka gunakan proses yang biasa.

Marc Gravell
sumber
0

Sebuah PowerShell variasi berdasarkan jawaban yang ada dari SliverNinja dan Martin Hollingsworth. Ini telah diuji dengan Visual Studio 2015 pada lingkungan win7 / x64 . Skrip akan meminta Anda untuk menutup Visual Studio jika sedang berjalan (tidak akan mencoba membunuhnya).

$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
sumber