IISのデバッグ時にVisual Studio Attachのセキュリティ警告をオフにする


160

Visual Studio 2008または2010を使用している場合、IIS w3wp.exeにアタッチするたびに、セキュリティのアタッチに関する警告が表示されます。

これをどうやって変えるの?

これがしばらくの間タイムアウトするように思われるので、それを長引いているために接続しておく方法も知っておくと便利です。

ところで、私は以下の回答にコメントとしてこれを追加しました。最初に行ったのは、msdnの記事http://msdn.microsoft.com/en-us/library/ms241736.aspxを試してみました が、機能しません。


1
これは最近までVS2015で機能していました-私は間違いなくすべてのVSインスタンスを閉じていて、キーが設定されていますが、警告が再びポップアップし始めました。
高速乗算2016年

回答:


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の場合、上記のレジストリキーを作成する必要がある場合があります。

  1. Visual Studioが実行されていないことを確認し、レジストリエディターを開きます。
  2. に移動し 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というファイルとして、および管理者として実行、またはコピーと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はどうですか?Debuggerキーがまったくありません(ほとんどがありません)
Adaptabi 2017

4
Visual Studio 2017はローカルレジストリを保持しているように見えるため、グローバルレジストリではなく、このファイルを変更する必要があります。このローカルレジストリファイルを編集するだけでAttach Security Warningの問題を修正しました。詳細については、この回答をお読みください:stackoverflow.com/a/41122603/692665
Ceridan

1
@TravisK、基本的にあなたはデフォルトでこのキーを持っていません、そしてこの状況はゼロに等しい値を持つこのキーを持つことに等しいです。あなたの場合は、キーDisableAttachSecurityWarningおよび値が1の新しいDWORDを手動でデバッガセクションに追加する必要があります。完了したら、プライベートレジストリをアンロードするだけで、MSVSを実行してテストできます。
Ceridan 2017年

13

レジストリ設定は機能します。ただし、32ビットのregedit.exeをで使用する%windir%\SysWOW64\か、で追加して、VS2005 / 2008の32ビットのレジストリサンドボックスで設定する必要があります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ファイルに保存する場合は、それを行う必要があることに注意してください。


8

Windows 7で動作させることができました。VS2008を開いたまま、レジストリ値を変更しました。次に、それを閉じてレジストリエディタを更新し、値が0にリセットされていることに気付きました。次に、値を1に戻し、VS2008を起動しました。これで正常に動作します。私はVS2008を閉じて再び開いてみましたが、レジストリ値は1のままです。ご協力ありがとうございます


7

この投稿の他の回答には正しい情報が含まれていますが、機能させるのに問題があったため、これは回答を非常に明確にするための試みです。これらの手順は、Windows 7 Ultimate 64ビットで実行されているVisual Studio 2010で機能しました。

  • Visual Studioのインスタンスが実行されていないことを確認します(タスクマネージャーを使用してdevenv.exeを確認します
  • DWORD DisableAttachSecurityWarningレジストリ値をHKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ XX \ Debuggerに追加し、値を1に設定します。Visual Studio 2008の場合はXXを9.0に置き換え、2010の場合は10.0を使用

これを機能させるのに苦労した理由は、HKEY_CURRENT_USERの代わりにHKEY_LOCAL_MACHINEを使用してこれを試みていたためです。私は自分の間違いを特定するために、プロセスモニターと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 IDを実際のWindowsユーザーに変更できます。


1
私は最近、これまで見たことのないこの「機能」に悩まされましたが、実際のユーザーアカウントからapppoolidentityに切り替えただけだとあなたの答えが気づいたとき、
drzaus


4

これは質問に対する直接的な回答ではありませんが、セキュリティメッセージを回避し、以前にアタッチされたプロセスにアタッチするためのより高速な方法を提供します。

  • 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

そのため、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


0

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!"
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.