「.NET」カテゴリーアーカイブ

Create and Embed an Application Manifest (UAC)

Visual Studio 2005で、アプリケーション起動時にUACの昇格ダイアログを表示させる方法。
(Visual Studio 2008ならもっと簡単。)
Step 6: Create and Embed an Application Manifest (UAC)
Professional Visual Studio » Enabling Your Application for UAC
yourapp.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft- 
     com:asm.v2">
      <ms_asmv2:security>
         <ms_asmv2:requestedPrivileges>
            <ms_asmv2:requestedExecutionLevel level="requireAdministrator">
            </ms_asmv2:requestedExecutionLevel>
         </ms_asmv2:requestedPrivileges>
      </ms_asmv2:security>
   </ms_asmv2:trustInfo>
</assembly>

post build task in your Visual Studio project's Project Properties:

"$(FrameworkSDKDir).\Bin\mt.exe" -nologo -manifest "$(ProjectDir)$(TargetFileName).manifest" -outputresource:$(TargetPath);#1"

or

mt.exe -manifest "$(ProjectDir)$(TargetName).exe.manifest" -updateresource:"$(TargetDir)$(TargetName).exe;#1"

ASP.NET 偽装

ASP.NET 偽装
@IT:連載:プログラミングASP.NET 第17回 ASP.NETにおける認証と認定
ASP.NET偽装を有効にしていると、ASP.NETアプリケーションがIUSRで実行されたりするため、イベントログに書き込めないなど、アクセス権関連のトラブルが発生する可能性がある。
たとえば、ASP.NET偽装を有効にしていたため、以下の例外が発生した。

System.InvalidOperationException がキャッチされました
  Message="ソース 'XXX' のログを開けません。ユーザーに書き込みアクセス権がありません。"
  Source="System"
  StackTrace:
       場所 System.Diagnostics.EventLog.OpenForWrite(String currentMachineName)
       場所 System.Diagnostics.EventLog.InternalWriteEvent(UInt32 eventID, UInt16 category, EventLogEntryType type, String[] strings, Byte[] rawData, String currentMachineName)
       場所 System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
       場所 System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category)

この例外は、IISの仮想ディレクトリの設定で、ASP.NET偽装を無効にすることで解決した。