使用Visual Studio 2008或2010时,每次附加到IIS w3wp.exe时,您都会收到“附加安全警告”,
您如何看待?
也很高兴知道如何保持它的持久性,因为这似乎会在一段时间后超时。
顺便说一句:我将此添加为对下面答案的注释,我所做的第一件事是尝试msdn文章 http://msdn.microsoft.com/en-us/library/ms241736.aspx,但这不起作用。
使用Visual Studio 2008或2010时,每次附加到IIS w3wp.exe时,您都会收到“附加安全警告”,
您如何看待?
也很高兴知道如何保持它的持久性,因为这似乎会在一段时间后超时。
顺便说一句:我将此添加为对下面答案的注释,我所做的第一件事是尝试msdn文章 http://msdn.microsoft.com/en-us/library/ms241736.aspx,但这不起作用。
Answers:
也可以在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,您可能需要创建上面引用的注册表项。
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\14.0\Debugger
,右键单击并创建一个新的DWORD
:
DisableAttachSecurityWarning
1
。更新:如果您不想打开regedit,请将此要点另存为* .reg文件并运行(导入低于VS2017的所有VS版本的密钥)。
Visual Studio 2017
配置保存在专用注册表位置,请参见以下答案:https : //stackoverflow.com/a/41122603/67910
对于VS 2017,将此要点另存为* .ps1文件并以admin身份运行,或者将以下代码复制并粘贴到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
}
注册表设置确实起作用;但是,必须确保在VS2005 / 2008的32位注册表沙箱中对其进行设置,方法是在中使用32位regedit.exe %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
只需将版本更改为2005年为8.0、2010年为10.0等。
注意:Windows 7上的regedit似乎希望将.reg文件另存为UTF16-LE,因此,如果将其保存为.reg文件,请注意,您需要这样做。
我能够使其在Windows 7上运行。我首先在VS2008仍打开的情况下更改了注册表值。然后关闭它并刷新注册表编辑器,并注意到该值已重置为0。然后我将其更改回1并启动VS2008。现在可以正常工作了。我试图关闭VS2008并将其重新打开,并且注册表值保持为1。感谢您的帮助
这篇文章中的其他答案包含正确的信息,但是我无法使其正常工作,因此这是尝试使答案非常明确。这些说明适用于在Windows 7 Ultimate 64位上运行的Visual Studio 2010。
我之所以努力工作,是因为我尝试使用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
如果它是本地计算机,则可以将iis AppPool标识更改为实际的Windows用户。
您的答案可从http://msdn.microsoft.com/zh-cn/library/ms241736.aspx获得
如果您调试的是导致此警告出现的合法情况,并希望取消显示该警告,则可以使用注册表设置来执行此操作。完成场景后,请记住要重新启用警告。
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
因此,对我而言,在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
一个PowerShell的基础上,从SliverNinja和马丁·霍林斯沃思已有答案的变化。已在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!"
}