VS2005からのお引越し (4)VS Express2013で 管理者権限付きのEXEを作るには

VS2005で作ったデスクトップ系のプログラムは、Visual Studio Express 2013 for Windows Desktop で開くと自動的に変換され問題なく実行できた と書きました。(ここ
ところが 手持ちのプロジェクトを順に変換したところ 『指定されたパスが見つかりません。・・・MSB3073:は コード 3 で終了しました。』 とのエラーメッセージが表示され  EXE自体は作成されても 実行できないプロジェクトにぶつかりました。
WEBをググルと ビルド後イベントで 指定したコマンドがエラーになったらしい。とうの昔の話なので そんなことをやったかどうかの記憶すら忘れていました。(汗;;) 2013に変換する前のプロジェクトを VS2005で開いてみると ビルド後イベントとして
“$(DevEnvDir)….SDKv2.0binmt.exe” -manifest “$(ProjectDir)$(TargetName).exe.manifest” -outputresource:”$(TargetDir)$(TargetFileName)”;#1
のコマンドが入っています。

これって一体??こんな難しいコマンド自分で作れる訳ないし・・
コマンドの一部を使ってググルと あった!! ここを参照して管理者権限付きのEXEを作ったようだ。(自分でしたことながら すっかり忘却の彼方) その方法は次のようになります。
1.マニフェストファイルを作る
 <?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
 <assembly xmlns=”urn:schemas-microsoft-com:asm.v1″ manifestVersion=”1.0″>
  <assemblyIdentity version=”1.0.0.0″ processorArchitecture=”X86″ name=”Regist2″ type=”win32″/>
  <trustInfo xmlns=”urn:schemas-microsoft-com:asm.v3″>
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level=”requireAdministrator”/>
      </requestedPrivileges>
    </security>
  </trustInfo>
 </assembly>
2.プロジェクトのプロパティダイアログを開いて ビルド後イベントとして マニフェストを埋め込む処理を追加する
“$(DevEnvDir)….SDKv2.0binmt.exe” -manifest “$(ProjectDir)$(TargetName).exe.manifest” -outputresource:”$(TargetDir)$(TargetFileName)”;#1

エラーメッセージで表示された 『指定されたパスが見つかりません。』とは ビルド後イベントに指定したコマンドの”$(DevEnvDir)….SDKv2.0binmt.exe” が 存在しないことを指しているようです。しかもExpressではプロジェクトのプロパティのダイアログでは ビルド後イベントの指定はできません。

プロジェクトファイルを開くと最後の方に次の記述が
<PropertyGroup>
  <PostBuildEvent>”$(DevEnvDir)….SDKv2.0binmt.exe” -manifest “$(ProjectDir)$(TargetName).exe.manifest” -outputresource:”$(TargetDir)$(TargetFileName)”;#1
  </PostBuildEvent>
</PropertyGroup>

そこで ”$(DevEnvDir)….SDKv2.0binmt.exe”の部分をmt.exeのパスをフルパスで指定すると 見事コンパイル成功!!!
管理者権限付きのEXEが生成されました。

スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする