Tắt Visual Studio Đính kèm cảnh báo bảo mật khi gỡ lỗi IIS


160

Khi sử dụng Visual Studio 2008 hoặc 2010, mỗi khi bạn đính kèm vào IIS w3wp.exe, bạn sẽ nhận được Cảnh báo bảo mật đính kèm,

Làm thế nào để bạn biến điều này?

Cũng thật tuyệt khi biết, làm thế nào để giữ nó gắn liền với nán lại, vì điều này dường như hết thời gian sau một thời gian.

Btw: Tôi đã thêm nhận xét này dưới dạng nhận xét vào câu trả lời bên dưới, điều đầu tiên tôi làm là thử bài viết msDN http://msdn.microsoft.com/en-us/l Library / ms241736.aspx nhưng không được.


1
Điều này hoạt động cho đến gần đây, trong VS2015 - Tôi chắc chắn đã đóng tất cả các phiên bản VS, và khóa được đặt, nhưng cảnh báo bắt đầu bật lên một lần nữa.
fastmultiplication

Câu trả lời:


231

Cũng được tìm thấy trong bài viết được đề cập bởi Tzury, nhưng để tổng hợp các câu trả lời trong chủ đề này:

đảm bảo Visual Studio không chạy khi thay đổi khoá đăng ký hoặc nó sẽ bị ghi đè khi thoát với giá trị cũ

Thay đổi (hoặc tạo) khoá đăng ký sau thành 1 :

Phòng thu hình ảnh 2008 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger\DisableAttachSecurityWarning

Studio hình ảnh 2010 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger\DisableAttachSecurityWarning

Phòng thu hình ảnh 2012 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\Debugger\DisableAttachSecurityWarning

Visual Studio 2013 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\Debugger\DisableAttachSecurityWarning

Phòng thu hình ảnh 2015 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger\DisableAttachSecurityWarning

Đối với VS2015, bạn có thể cần tạo Khóa đăng ký được tham chiếu ở trên.

  1. Đảm bảo Visual Studio không chạy và mở Registry Editor.
  2. Điều hướng đến HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger, nhấp chuột phải và tạo mới DWORD:
    • Tên: DisableAttachSecurityWarning
    • Giá trị : 1.

Cập nhật: Nếu bạn không muốn mở regedit, hãy lưu ý chính này dưới dạng tệp * .reg và chạy nó (nhập khóa cho tất cả các phiên bản VS thấp hơn VS2017).

Phòng thu hình ảnh 2017

Cấu hình được lưu trong một vị trí đăng ký riêng, xem câu trả lời này: https://stackoverflow.com/a/41122603/67910

Đối với VS 2017 , hãy lưu ý chính này dưới dạng tệp * .ps1 và chạy nó với tư cách quản trị viên, hoặc sao chép và dán mã sau vào tệp 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
Đối với VS2012, khóa là HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ Debugger \ DisableAttachSecurityWarning
maddoxej

17
@ImranRizvi bạn cần đảm bảo rằng nó không chạy trong khi thực hiện thay đổi sổ đăng ký, nếu không nó sẽ bị ghi đè khi thoát với giá trị cũ
Wiebe Tijsma

4
Còn VS 2017 thì sao? Khóa Debugger hoàn toàn không có (hầu hết chúng đều bị thiếu)
Adaptabi

4
Có vẻ như Visual Studio 2017 giữ đăng ký cục bộ, vì vậy bạn phải thay đổi tệp này chứ không phải đăng ký toàn cầu. Tôi đã khắc phục sự cố với Đính kèm Cảnh báo Bảo mật chỉ chỉnh sửa tệp đăng ký cục bộ này. Đọc câu trả lời này để được giải thích thêm: stackoverflow.com/a/41122603/692665
Ceridan

1
@TravisK, về cơ bản, bạn không có khóa này theo mặc định và tình huống này tương đương với khóa này có giá trị bằng 0. Trong trường hợp của bạn, bạn nên thêm thủ công DWORD mới với khóa DisableAttachSecurityWarning và Value bằng 1 vào phần Trình gỡ lỗi. Khi bạn đã hoàn tất, chỉ cần tải đăng ký riêng tư và bây giờ bạn có thể chạy MSVS của mình và kiểm tra nó.
Ceridan

13

Cài đặt đăng ký không hoạt động; tuy nhiên, bạn phải đảm bảo rằng bạn đã đặt nó trong hộp cát đăng ký 32 bit cho VS2005 / 2008 bằng cách sử dụng regedit.exe 32 bit trong %windir%\SysWOW64\hoặc thêm nó vào bên dưới HKLM\Software\Wow6432Node\.... Tôi đã tạo một tập lệnh .reg chỉ cần thêm nó vào cả hai:

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

Chỉ cần thay đổi phiên bản thành 8.0 cho năm 2005, 10.0 cho năm 2010, v.v.

LƯU Ý: regedit trên Windows 7 dường như muốn các tệp .reg được lưu dưới dạng UTF16-LE, vì vậy nếu bạn lưu nó vào tệp .reg, lưu ý rằng bạn cần phải làm điều đó.


8

Tôi đã có thể làm cho nó hoạt động trên Windows 7. Lần đầu tiên tôi đã thay đổi giá trị đăng ký với VS2008 vẫn được mở. Sau đó tôi đã đóng nó và làm mới trình soạn thảo sổ đăng ký và nhận thấy rằng giá trị được đặt lại thành 0. Sau đó tôi đổi nó thành 1 và bắt đầu VS2008. Bây giờ nó hoạt động tốt. Tôi đã cố gắng đóng VS2008 và mở lại và giá trị đăng ký vẫn còn 1. Cảm ơn sự giúp đỡ của bạn


7

Các câu trả lời khác trong bài đăng này chứa thông tin đúng nhưng tôi gặp vấn đề khi làm cho nó hoạt động nên đây là một nỗ lực để làm cho câu trả lời rất rõ ràng. Các hướng dẫn này đã hoạt động cho Visual Studio 2010 chạy trên Windows 7 Ultimate 64-Bit.

  • Đảm bảo rằng không có phiên bản nào của Visual Studio đang chạy (Sử dụng trình quản lý tác vụ để kiểm tra devenv.exe )
  • Thêm giá trị đăng ký DWORD DisableAttachSecurityWarning vào HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debugger và đặt giá trị là 1 . Đối với Visual Studio 2008 thay thế XX bằng 9.0 , cho năm 2010 sử dụng 10.0

Lý do tại sao tôi đấu tranh để làm việc này là vì tôi đã thử điều này bằng cách sử dụng HKEY_LOCAL_MACHINE thay vì HKEY_CURRENT_USER. Tôi đã phải sử dụng Trình theo dõi tiến trình và một chút lọc trên devenv để xác định lỗi của mình. Tôi nghi ngờ giá trị HKLM chỉ có bất kỳ ảnh hưởng nào nếu nó được đặt trước khi bạn mở Visual Studio lần đầu tiên.

Bất kỳ phiên bản mở nào của Visual Studio sẽ ghi đè lên các thay đổi của bạn khi chúng bị đóng và chỉ các phiên bản mới sẽ nhận cài đặt trong mọi trường hợp.

Việc sử dụng sổ đăng ký Wow6432Node dường như là không cần thiết theo như tôi có thể nói. Các lệnh Powershell sau đây sẽ áp dụng các bước cho 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

Bạn có thể thay đổi danh tính iPool AppPool cho người dùng windows thực tế của mình, nếu đó là máy cục bộ.


1
Gần đây tôi đã bị "tính năng" này cắn, điều mà tôi chưa từng thấy trước đây, khi câu trả lời của bạn khiến tôi nhận ra điều đó bởi vì tôi vừa chuyển từ một tài khoản người dùng thực tế sang tính ứng dụng.
drzaus


4

Đây không phải là một câu trả lời trực tiếp cho câu hỏi, nhưng nó phá vỡ thông điệp bảo mật và cũng cung cấp một cách nhanh hơn để đính kèm vào một quy trình được đính kèm trước đó:

  • cài đặt phần mở rộng Reattach
  • đính kèm bằng Reattach và tin nhắn được bỏ qua
  • đính kèm lại (Ctrl-R + Ctrl- [1-5]) vào quy trình trước đó có cùng lợi ích

3

Biến thể Powershell ... thay thế $vsversionbằng phiên bản bạn muốn áp dụng nó.

Lưu ý : Lưu công việc của bạn trước khi chạy này. Tất cả các phiên bản VS đang chạy sẽ bị dừng. Nếu bạn không kết thúc các trường hợp VS mở - giá trị sẽ không được giữ lại.

$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

vì vậy, điều duy nhất phù hợp với tôi với Visual Studio 2010 trên x64 / Win7 là cập nhật cả hai nút, bao gồm cả 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

Một tiện ích mở rộng Visual Studio có sẵn cho VS2015 và VS2017: "Đính kèm tất cả mọi thứ" :

nhập mô tả hình ảnh ở đây

Bạn có thể liên kết "Đính kèm vào IIS" với bất kỳ hợp âm chính nào bạn muốn bằng cách sử dụng quy trình thông thường.


0

Một PowerShell biến thể dựa trên câu trả lời hiện tại từ SliverNinja và Martin Hollingsworth. Điều này đã được thử nghiệm với Visual Studio 2015 trên môi trường win7 / x64 . Kịch bản sẽ yêu cầu bạn đóng Visual Studio nếu nó đang chạy (sẽ không cố giết nó).

$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!"
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.