cscript.exe
を使用して実行するJScriptスクリプトがあります。それは、cscript.exe
を実行し、別のJScriptスクリプトを実行するためのパラメータを持つデスクトップ(およびスタートメニュー)にショートカットを作成します。関連する部分では次のようになります:JScriptを使用して「管理者として実行」を使用するショートカットを作成する方法
function create_shortcut_at(folder, target_script_folder)
{
var shell = new ActiveXObject("WScript.Shell");
var shortcut = shell.CreateShortcut(folder + "\\Run The Script.lnk");
shortcut.TargetPath = "cscript";
shortcut.Arguments = "\""+target_script_folder+"\\script.js\" /aParam /orTwo";
shortcut.IconLocation = target_script_folder+"\\icon.ico";
shortcut.Save();
}
create_shortcut_at(desktop_folder, script_folder)
のようになります。
これまでのところ、それは機能します。それは、スクリプトを正しく指してデスクトップアイコンを作成し、ダブルクリックするとそれを実行します。問題は、本当に "管理者として"スクリプトを実行する必要があることです。
スクリプトは本当に "管理者として"実行する必要があります - それは(すべてのユーザー用)アプリケーションをインストールし、コンピュータを再起動します。 (関心のある人は、スクリプトはwpkg.jsです)。
ショートカットのターゲットは実際には「cscript.exe」なので、エスカレーションのマニフェストは使用できません。私はおそらく理論的にWindowsディレクトリにcscript.exe.manifestをインストールすることができますが、それが機能したとしても、それは明らかな理由のためにひどい考えです。
ダミースクリプトを使用しない方が良いでしょう。それは対処する余分なファイルで、一見合理的な解決策があります。ショートカットの[管理者として実行]チェックボックスをオンにします。
30秒間の調査の結果、WScript.Shell ActiveXオブジェクトにはこのために必要なインターフェイスがないことが明らかになりました。追加の調査では、IShellLinkDataListが行うことを示しています。ただし、IShellLinkDataListは汎用COMインターフェイスです。私はインターネットの周りにいくつかの例を見ています。ほとんどの例はhereです。しかし、すべての例では、コンパイルされたコード(C++、C#、さらにはJScript.NET)でそれを行います。私は、JScriptで直接cscript.exe
から実行できるようにすることを大いに好んでいます。
私は、私が考えなかったアイデアや他の解決策だと言いました。
このソリューションを必要とする将来の人々を助けるために、.LNKフォーマットはここで指定されていますhttp://msdn.microsoft.com/en-us/library/dd871305( v = prot.13)。特に、これはhttp://msdn.microsoft.com/en-us/library/dd891314(v=prot.13)を使用しています。非常に賢い解決、ありがとう! – alficles