ปิด Visual Studio Attach เตือนความปลอดภัยเมื่อทำการดีบัก IIS


160

เมื่อใช้ Visual Studio 2008 หรือ 2010 ทุกครั้งที่คุณแนบกับ IIS w3wp.exe คุณจะได้รับคำเตือนความปลอดภัยสำหรับการแนบ

คุณจะเปิดสิ่งนี้ได้อย่างไร

มันจะเจ๋งมากที่รู้ว่าจะเก็บมันไว้เพื่ออิทธิพลอย่างไรเช่นนี้ดูเหมือนว่าจะหมดเวลาสักพัก

Btw: ฉันได้เพิ่มสิ่งนี้เป็นความคิดเห็นต่อคำตอบด้านล่างสิ่งแรกที่ฉันทำคือลองบทความ msdn http://msdn.microsoft.com/en-us/library/ms241736.aspxแต่นั่นไม่ได้ผล


1
สิ่งนี้ใช้งานได้จนกระทั่งเมื่อไม่นานมานี้ใน VS2015 - ฉันปิดอินสแตนซ์ VS ทั้งหมดแล้ว & ตั้งค่าคีย์แล้ว แต่คำเตือนเริ่มปรากฏขึ้นอีกครั้ง
คูณซ้ำซ้อน

คำตอบ:


231

พบได้ในบทความที่กล่าวถึงโดย Tzury แต่เพื่อรวมคำตอบในหัวข้อนี้:

ตรวจสอบให้แน่ใจว่า Visual Studio ไม่ทำงานเมื่อเปลี่ยนรีจิสทรีคีย์มิฉะนั้นจะถูกเขียนทับเมื่อออกด้วยค่าเก่า

เปลี่ยน (หรือสร้าง) รีจิสตรีคีย์ต่อไปนี้เป็น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

สำหรับ VS2015 คุณอาจต้องสร้าง Registry Key ที่อ้างถึงข้างต้น

  1. ตรวจสอบให้แน่ใจว่า Visual Studio ไม่ทำงานและเปิดตัวแก้ไขรีจิสทรี
  2. นำทางไปยัง HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debuggerคลิกขวาและสร้างใหม่DWORD:
    • ชื่อ: DisableAttachSecurityWarning
    • ค่า: 1.

อัปเดต:หากคุณไม่ต้องการเปิด regedit ให้บันทึกส่วนสำคัญนี้เป็นไฟล์ * .reg และเรียกใช้ (นำเข้าคีย์สำหรับเวอร์ชัน VS ทั้งหมดที่ต่ำกว่า VS2017)

Visual Studio 2017

การกำหนดค่าจะถูกบันทึกไว้ในที่ตั้งของรีจิสทรีส่วนตัวดูคำตอบนี้: https://stackoverflow.com/a/41122603/67910

สำหรับVS 2017ให้บันทึกส่วนสำคัญนี้เป็นไฟล์ * .ps1 และเรียกใช้ในฐานะผู้ดูแลระบบหรือคัดลอกและวางรหัสต่อไปนี้ในไฟล์ 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
สำหรับ VS2012 กุญแจสำคัญคือ HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej

17
@ImranRizvi คุณต้องตรวจสอบให้แน่ใจว่าไม่ได้ทำงานในขณะที่ทำการเปลี่ยนแปลงรีจิสทรีอยู่ดีมิฉะนั้นจะถูกเขียนทับเมื่อออกด้วยค่าเก่า
Wiebe Tijsma

4
แล้ว VS 2017 ล่ะ คีย์ดีบักเกอร์หายไปเลย (ส่วนใหญ่หายไป)
Adaptabi

4
ดูเหมือนว่า Visual Studio 2017 จะเก็บรีจิสทรีในระบบไว้ดังนั้นคุณต้องเปลี่ยนไฟล์นี้ไม่ใช่รีจิสทรีทั่วโลก ฉันแก้ไขปัญหาด้วยคำเตือนการรักษาความปลอดภัยของไฟล์แนบเพียงแก้ไขไฟล์รีจิสตรีนี้ อ่านคำตอบนี้สำหรับคำอธิบายเพิ่มเติม: stackoverflow.com/a/41122603/692665
Ceridan

1
@TravisK โดยทั่วไปคุณไม่มีคีย์นี้ตามค่าเริ่มต้นและสถานการณ์นี้เท่ากับมีคีย์นี้ที่มีค่าเท่ากับศูนย์ ในกรณีของคุณคุณควรเพิ่ม DWORD ใหม่ด้วยคีย์ DisableAttachSecurityWarning และ Value เท่ากับ 1 ในส่วนดีบักเกอร์ เมื่อเสร็จแล้วให้ยกเลิกการโหลดรีจิสทรีส่วนตัวและตอนนี้คุณสามารถเรียกใช้ MSVS ของคุณและทดสอบ
Ceridan

13

การตั้งค่ารีจิสทรีไม่ทำงาน แต่คุณต้องให้แน่ใจว่าคุณตั้งค่าไว้ใน Sandbox รีจิสทรี 32 บิตสำหรับ VS2005 / 2008 โดยทั้งการใช้ regedit.exe 32 บิตในหรือเพิ่มภายใต้%windir%\SysWOW64\ HKLM\Software\Wow6432Node\...ฉันสร้างสคริปต์. reg ซึ่งเพิ่มลงในทั้งสองอย่าง:

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

เพียงแค่เปลี่ยนรุ่นเป็น 8.0 สำหรับปี 2005, 10.0 สำหรับปี 2010 และอื่น ๆ

หมายเหตุ: regedit บน Windows 7 ดูเหมือนว่าต้องการไฟล์. reg ที่บันทึกเป็น UTF16-LE ดังนั้นหากคุณบันทึกเป็นไฟล์. reg โปรดระวังว่าคุณต้องทำเช่นนั้น


8

ฉันสามารถทำให้มันทำงานบน Windows 7 ฉันได้เปลี่ยนค่ารีจิสตรีก่อนโดยที่ VS2008 ยังคงเปิดอยู่ ฉันปิดแล้วรีเฟรชตัวแก้ไขรีจิสทรีและสังเกตว่าค่าถูกรีเซ็ตเป็น 0 ฉันจึงเปลี่ยนกลับเป็น 1 และเริ่ม VS2008 ตอนนี้มันใช้งานได้ดี ฉันได้ลองปิด VS2008 แล้วเปิดขึ้นมาใหม่และค่ารีจิสตรี้ยังคงอยู่ 1 ขอบคุณสำหรับความช่วยเหลือของคุณ


7

คำตอบอื่น ๆ ในโพสต์นี้มีข้อมูลที่ถูกต้อง แต่ฉันมีปัญหาในการใช้งานดังนั้นนี่คือความพยายามในการทำให้คำตอบชัดเจนมาก คำแนะนำเหล่านี้ใช้สำหรับ Visual Studio 2010 ที่ทำงานบน Windows 7 Ultimate 64-Bit

  • ตรวจสอบให้แน่ใจว่าไม่มีอินสแตนซ์ของ Visual Studio ทำงานอยู่ (ใช้ตัวจัดการงานเพื่อตรวจสอบdevenv.exe )
  • เพิ่ม DWORD DisableAttachSecurityWarningค่ารีจิสทรีเพื่อHKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ ดีบักเกอร์และตั้งค่าให้เป็น1 สำหรับ Visual Studio 2008 แทนที่ XX ด้วย9.0สำหรับ 2010 ใช้10.0

เหตุผลที่ฉันพยายามทำให้งานนี้เกิดขึ้นคือฉันพยายามทำสิ่งนี้โดยใช้ HKEY_LOCAL_MACHINE แทนที่จะเป็น HKEY_CURRENT_USER ฉันต้องใช้การตรวจสอบกระบวนการและการกรองบน ​​devenv เพื่อระบุข้อผิดพลาดของฉัน ฉันสงสัยว่าค่า HKLM จะมีผลกระทบหากการตั้งค่าก่อนที่คุณจะเปิด Visual Studio เป็นครั้งแรก

อินสแตนซ์ที่เปิดอยู่ใด ๆ ของ Visual Studio จะเขียนทับการเปลี่ยนแปลงของคุณเมื่อปิดและอินสแตนซ์ใหม่เท่านั้นที่จะรับการตั้งค่าในทุกกรณี

การใช้งานWow6432Nodeนั้นไม่จำเป็นเท่าที่ฉันจะบอกได้ คำสั่ง Powershell ต่อไปนี้จะใช้ขั้นตอนสำหรับ 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

คุณสามารถเปลี่ยนข้อมูลประจำตัวของ iis AppPool เป็นผู้ใช้ windows จริงของคุณได้หากเป็นเครื่องในระบบ


1
เมื่อเร็ว ๆ นี้ฉันถูกกัดโดย "ฟีเจอร์" ซึ่งฉันไม่เคยเห็นมาก่อนเมื่อคำตอบของคุณทำให้ฉันรู้ว่าเป็นเพราะฉันเพิ่งเปลี่ยนจากบัญชีผู้ใช้จริงไปสู่แอพพลิเคชั่น
drzaus

4

คำตอบของคุณมีอยู่ที่http://msdn.microsoft.com/en-us/library/ms241736.aspx

หากคุณกำลังดีบักสถานการณ์ที่ถูกกฎหมายที่ทำให้คำเตือนนี้ปรากฏขึ้นและต้องการระงับมันจะมีการตั้งค่ารีจิสทรีที่ช่วยให้คุณทำสิ่งนี้ได้ โปรดจำไว้ว่าให้เปิดใช้งานคำเตือนอีกครั้งหลังจากคุณทำกับสถานการณ์แล้ว


4

นี่ไม่ใช่คำตอบสำหรับคำถามโดยตรง แต่เป็นการหลีกเลี่ยงข้อความด้านความปลอดภัยและยังเป็นวิธีที่รวดเร็วกว่าในการแนบกับกระบวนการที่แนบมาก่อนหน้านี้:

  • ติดตั้งReattach extension
  • แนบโดยใช้ Reattach และข้อความถูกข้าม
  • การแนบใหม่ (Ctrl-R + Ctrl- [1-5]) กับกระบวนการก่อนหน้ามีประโยชน์เหมือนกัน

3

ตัวแปรPowerShell ... แทนที่$vsversionด้วยเวอร์ชันที่คุณต้องการใช้กับ

หมายเหตุ : บันทึกงานของคุณก่อนใช้งาน อินสแตนซ์ VS ที่ทำงานอยู่ทั้งหมดจะหยุดทำงาน หากคุณไม่ได้ปิดอินสแตนซ์ VS ที่เปิดอยู่ค่าจะไม่ถูกเก็บไว้

$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

ดังนั้นสิ่งเดียวที่จะทำงานกับฉันด้วย Visual Studio 2010 บน x64 / Win7 คือการอัปเดตทั้งสองโหนดรวมถึง 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

Visual Studio extension สำหรับ VS2015 และ VS2017: "Attach to All Things" :

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถผูก "สิ่งที่แนบมากับ IIS" กับสิ่งที่สำคัญคอร์ดที่คุณต้องการโดยใช้กระบวนการปกติ


0

ชุดรูปแบบpowershellตามคำตอบที่มีอยู่จาก SliverNinja และ Martin Hollingsworth สิ่งนี้ได้รับการทดสอบกับVisual Studio 2015บนสภาพแวดล้อมwin7 / x64 สคริปต์จะขอให้คุณปิด Visual Studio ถ้ามันกำลังทำงานอยู่ (จะไม่พยายามฆ่ามัน)

$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!"
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.