3


0

Windows 7でsn.exeを実行するとアクセスが拒否されました

Windows 7マシンでアセンブリをビルド/署名しようとしていますが、次の例外が発生します。

x:\> SN -q -Vr "x:\someassembly.dll"
Failed to open registry key -- Access is denied.

同じ問題であると思われる次のスレッドを見つけました。レジストリキーのアクセス許可を変更することで修正したと述べていますが、どのレジストリキーについても言及していません。

誰かが以前にこれに遭遇したことがありますか?

4 Answer


4


OK、http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx [Process Mon]を使用して問題のキーを特定しました。

sn.exe
RegCreateKey
HKLM\SOFTWARE\Wow6432Node\Microsoft\StrongName
ACCESS DENIED
Desired Access: Maximum Allowed

現在のユーザーに次のキーへの書き込みアクセスを許可すると、この問題が修正されました

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft

ルートHKLMノードへの書き込みアクセス権を* didnt *与えると問題が解決することに注意してください(レジストリ内のフォルダーのアクセス許可は明らかに再帰的ではありませんか?)


0


その場合は、http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx [Process Monitor]を使用して、sn.exeがアクセスしようとしているレジストリキーを確認できます。 ただし、これは実際にはプログラミング関連ではありません。


0


「-Vr」を「sn.exe」とともに使用すると、署名の検証が無効になるため、潜在的なセキュリティリスクと見なされます。 そのため、権限のないコマンドプロンプトから「sn.exe -Vr」を実行できません。

`sn.exe -Vr`を実行する前に、管理者特権でコマンドプロンプトを開きます。

ちなみに、 `-Vr`を使用すると検証エントリが登録され(指定されたアセンブリは検証されないことを示します)、インストルメント済みバイナリ(インストルメンテーション後に署名されていない)の実行中に一時的にのみ使用されます。

完了したら、エントリの登録を解除するために `-Vu`を使用することを忘れないでください。


0


他の人や私が指摘したように、 -Vr(厳密な名前の検証スキップのためにシステム全体にアセンブリを登録する)は実際に特権操作であり、取得する「アクセス拒否」は正当なものです。

Sn.exe(Strong Name Tool)-MSDNによると、ユーザー名を追加して、チェックを無効にするユーザー。 これには管理者権限は必要ありません。

sn -Vr  %USERNAME%