予防方法Vistaから必要な上昇patch.exe?
-
22-08-2019 - |
質問
【ごめんなさいなが直接プログラミングます。しかし最近に切り替え新しい眺望がいをUACを有効にないでください教えて無効にすることもできませんので、オプション)。]
毎回実行しgnuのpatch.exe または、標高ダイアログから。い名前の変更patch.exe へfoo.exe ないこなっているものと推察されるがVistaの"ヒューリスティクス".
なんだろうけど、日本人に無効にする方法。で走行うナットのGooglesんです。
いや、あの追加マニフェストだけでpatch.exe えのしない方が上昇す。また、その場合はどのように書くでしょうかようなマニフェスト?
おそらく得ることができ、ヘ私の頭の時のことです。
解決
あなたはにマニフェストを追加することができた場合 影響を受けた実行ファイル宣言 '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フルパスを渡すことができます。