質問

【ごめんなさいなが直接プログラミングます。しかし最近に切り替え新しい眺望がいをUACを有効にないでください教えて無効にすることもできませんので、オプション)。]

毎回実行しgnuのpatch.exe または、標高ダイアログから。い名前の変更patch.exe へfoo.exe ないこなっているものと推察されるがVistaの"ヒューリスティクス".

なんだろうけど、日本人に無効にする方法。で走行うナットのGooglesんです。

いや、あの追加マニフェストだけでpatch.exe えのしない方が上昇す。また、その場合はどのように書くでしょうかようなマニフェスト?

おそらく得ることができ、ヘ私の頭の時のことです。

役に立ちましたか?

解決

から:
ます。http://社会的.msdn.microsoft.com /掲示板/ EN-US / windowsgeneraldevelopmentissues /スレッド/ bf4f7dfa-5553-41d3-9c8e-311ee4a88599 /

  

あなたはにマニフェストを追加することができた場合   影響を受けた実行ファイル宣言   'asInvoker' ののrequestedExecutionLevel   それはプロンプト停止する必要があります。

関連UACのアーキテクチャ上のガイドと、彼らは(ページの下部に第五の近くに)正常に動作して、既存のアプリケーションを変換します:

http://technet.microsoft.com/en-us/library /cc709628.aspxする

最後に、そのようなマニフェストを作成する方法:

http://www.google.com/search?q =書込み+ A + UAC +マニフェスト

-Adam

他のヒント

問題はご応募を含まない組立マニフェストと requestedExectutionLevel.

背景

すべて正しく記述のWindowsアプリケーションが必要とな組立マニフェストの作成が行えます。するとともに、2006年の一つの要素だけが必要である requestedExecutionLevel を指定するアプリケーションの場合はできるだけ機能は、ユーザーは、管理者が行います。

アプリケーションの場合は持たない組立マニフェストの場合はありません requestedExecutionLevel Windowsまで レガシー 用いると思います。

一互換性のものためのレガシーアプリケーションで知られてきているが、これまでインストーラは、udpaterことができる機能として実行管理者が行います。Windowsうようにこれらの用途によりそのファイル名:

  • 設定
  • 更新
  • パッチ

すべての例のファイル名の中に入っ互換ヒューリスティックにしようとしているを自動的に上げ のための のユーザーです。

がある場合、アプリケーションがない組立マニフェストでは有効な方法で書きます。

の正しい解

正しい値段が高くなりますが、追加の組立マニフェストが正しく応用する道があります。この障害者のヒューリスティックス.

サンプルのUAC"asInvoker"マニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
         <requestedPrivileges>
            <requestedExecutionLevel level="asInvoker" />
         </requestedPrivileges>
      </security>
   </trustInfo>
</assembly> 

私の場合は、次のようになり、ラッパープログラムを書かなければなりませんでした

別の名前でシステムの一時フォルダ(%TMP%)の内1-コピー "PATCH.EXE" ファイル: "apply.exe"

2実行 "%TMP%\ apply.exe" とは、所望の引数を指定します。

3-削除 "%TMP%\ apply.exe" ファイル

あなたがマニフェストを記述する必要はありません。

あなたは「PATCH.EXE」完全なパスを計算する必要がある場合は、

、.EXEと仮定すると%PATH%環境変数であり、あなたがC#で次のコードを使用することができます:

public string GetPatchInstallPath()
{
    StringDictionary env = 
    System.Diagnostics.Process.GetCurrentProcess().StartInfo.EnvironmentVariables;
    string pathEnvVble = env["PATH"];
    string[] paths = new string[]{};
    paths = pathEnvVble.Split(new char[] { ';' });

    foreach (string p in paths)
    {
       string fullPath = Path.Combine(p, "patch.exe");
       if (File.Exists(fullPath))
           return fullPath;
    }
    return string.Empty;
}
あなたはPATCH.EXEの場所は、%PATH%変数に新しいエントリを追加したくない場合は、

それ以外の場合は、あなたがあなたのラッパープログラムにPATCH.EXEフルパスを渡すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top