调试 IIS 时关闭 Visual Studio 附加安全警告
Posted
技术标签:
【中文标题】调试 IIS 时关闭 Visual Studio 附加安全警告【英文标题】:Turn off Visual Studio Attach security warning when debugging IIS 【发布时间】:2009-09-12 09:59:33 【问题描述】:使用 Visual Studio 2008 或 2010 时,每次附加到 IIS w3wp.exe 时都会收到附加安全警告:
你是怎么解决这个问题的?
如果知道如何让它保持更长时间的连接也很酷,因为这似乎会在一段时间后超时。
另外,我已经尝试过 Microsoft Docs 页面 Security Warning: Attaching to a process owned by an untrusted user can be dangerous,但没有成功
【问题讨论】:
这一直有效,直到最近,在 VS2015 中 - 我肯定关闭了所有 VS 实例,并且设置了密钥,但警告再次开始弹出。 【参考方案1】:在 Tzury 提到的文章中也找到了,但总结一下这个线程中的答案:
确保在更改注册表项时 Visual Studio 没有运行,否则它将在退出时被旧值覆盖
Visual Studio 2022:关注these instructions,然后重启。Visual Studio 2019:关注these instructions,然后重启。
对于旧版本的 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,您可能需要创建上面引用的注册表项。
-
确保 Visual Studio 没有运行,然后打开注册表编辑器。
导航到
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger
,右键新建DWORD
:
DisableAttachSecurityWarning
值:1
。
更新:如果您不想打开 regedit,请将这个 gist 保存为 *.reg 文件并运行它(导入所有低于 VS2017 的 VS 版本的密钥)。
Visual Studio 2017
配置保存在私有注册表位置,请参阅此答案:https://***.com/a/41122603/67910
对于 VS 2017,将此 gist 保存为 *.ps1 文件并以管理员身份运行,或将以下代码复制并粘贴到 ps1 文件中:
#IMPORTANT: Must be run as admin
dir $env:LOCALAPPDATA\Microsoft\VisualStudio\15.* | %
#https://***.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
【讨论】:
对于 VS2012,密钥是 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\Debugger\DisableAttachSecurityWarning @ImranRizvi 您需要确保在更改注册表时它没有运行,否则它将在退出时被旧值覆盖 VS 2017 怎么样? Debugger 键完全丢失(大部分都丢失了) 看起来 Visual Studio 2017 保留本地注册表,因此您必须更改此文件而不是全局注册表。我修复了附加安全警告的问题,只是编辑了这个本地注册表文件。阅读此答案以获得更多解释:***.com/a/41122603/692665 对于 VS2019,这对我有用:davici.nl/blog/…【参考方案2】:注册表设置确实有效;但是,您必须确保将其设置在 VS2005/2008 的 32 位注册表沙箱中,方法是使用 %windir%\SysWOW64\
中的 32 位 regedit.exe 或将其添加到 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
只需将版本更改为 2005 的 8.0、2010 的 10.0 等。
注意:Windows 7 上的 regedit 似乎希望将 .reg 文件保存为 UTF16-LE,因此如果将其保存为 .reg 文件,请注意您需要这样做。
【讨论】:
【参考方案3】:我能够让它在 Windows 7 上运行。我首先在 VS2008 仍然打开的情况下更改了注册表值。然后我关闭它并刷新注册表编辑器并注意到该值被重置为0。然后我将其改回1并启动VS2008。它现在工作正常。我已经尝试关闭VS2008并重新打开它并且注册表值保持为1。感谢您的帮助
【讨论】:
【参考方案4】:这篇文章中的其他答案包含正确的信息,但我在让它工作时遇到了问题,所以这是试图让答案非常明确。这些说明适用于在 Windows 7 Ultimate 64 位上运行的 Visual Studio 2010。
确保没有 Visual Studio 实例正在运行(使用任务管理器检查 devenv.exe) 将 DWORD DisableAttachSecurityWarning 注册表值添加到 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\X.X\Debugger 并将值设置为 1。对于 Visual Studio 2008,将 X.X 替换为 9.0,对于 2010,使用 10.0我努力让它工作的原因是我尝试使用 HKEY_LOCAL_MACHINE 而不是 HKEY_CURRENT_USER。我不得不求助于使用Process Monitor 并在 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
【讨论】:
【参考方案5】:如果是本地计算机,您可以将 iis AppPool 身份更改为您的实际 Windows 用户。
【讨论】:
我最近被这个我以前从未见过的“功能”所困扰,当你的回答让我意识到这是因为我刚刚将一个实际用户帐户从切换到apppool 身份。【参考方案6】:您的答案可在http://msdn.microsoft.com/en-us/library/ms241736.aspx获得
如果你正在调试一个合法的 导致此警告的情况 出现,想要压制它,那里 是一个注册表设置,允许您 去做这个。记得重新启用 完成后的警告 场景。
【讨论】:
【参考方案7】:这不是问题的直接答案,但它绕过了安全消息,还提供了一种更快的方式来附加到以前附加的进程:
安装Reattach extension 使用 Reattach 附加,消息被绕过 将 (Ctrl-R + Ctrl-[1-5]) 重新附加到前一个进程具有相同的好处【讨论】:
【参考方案8】: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
【讨论】:
【参考方案9】:Visual Studio 扩展可用于 VS2015 和 VS2017:"Attach To All The Things":
您可以使用通常的过程将“附加到 IIS”绑定到您喜欢的任何键。
【讨论】:
【参考方案10】:所以,对我来说,在 x64/Win7 上使用 Visual Studio 2010 的唯一方法是更新两个节点,包括 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
【讨论】:
【参考方案11】:基于 SliverNinja 和 Martin Hollingsworth 现有答案的 powershell 变体。这已在 win7/x64 环境中使用 Visual Studio 2015 进行了测试。如果 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!"
【讨论】:
以上是关于调试 IIS 时关闭 Visual Studio 附加安全警告的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2013 如何在停止调试Web程序后阻止IIS Express关闭
Visual Studio 2015 更新 1 - 调试时没有 IIS Express 响应
网站在visual studio调试正常,在IIS下就会出问题?