問題タブ [shellexecute]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - システム全体のShellExecuteフック?
すべてのアクティブなプロセスにフッキングモジュールを挿入することなく、C++を使用してシステム全体のShellExecuteフックをインストールする方法はありますか。私はWindows7を使用しています。これは、ShellExecuteを使用してデフォルトのブラウザーでリンクを開いたときに、リンクを開くブラウザーを次のように選択できるようにするためです。
python - Python から VS2008 コマンドを実行し、その出力を取得する方法は?
走りたい
Visual Studio 2008 コマンド ツールを使用します。次の場所にあります。"c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\"
起動されるコマンドは次のとおりです。%comspec% /k ""c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
「tf changeset 12345」を何らかの方法で追加し、最初にファイルにリダイレクトせずに文字列に保存したいと思います。コマンドラインから単純に呼び出すと、次のように入力するとGUIが表示されることに気付きました。
そして、次のようにすると、テキスト出力が得られます。
私はファイル システム上にファイルを作成したくありませんが、できれば "Pythonic の方法" でファイルを読み込んでください。
os.system()、サブプロセスの簡単な例を見てきましたが、やりたいことを実行する方法を説明しているようには見えません:
- 特定のディレクトリからプロセスを実行します (できれば chdir を使用せずに)
- 環境変数 + カスタム テキストを含むコマンドの実行。
- 一時ファイルを作成せずに出力をリダイレクトします。
私が望むものに近づけるお手伝いができれば幸いです。VS2008 またはその他の Windows プログラムでソリューションをテストすると役立ちます。
ありがとうございました!
c++ - デフォルトのブラウザを標準ユーザーとして開く (C++)
私は現在、ユーザーのブラウザーで URL を開くために ShellExecute "open" を使用していますが、プログラムがサービスとして昇格して実行されるため、Win7 と Vista で少し問題が発生します。
ShellExecute がブラウザーを開くと、ユーザーの代わりに「ローカル管理者」プロファイルを読み取るようです。たとえば、キーボードを使用しているユーザーがデフォルトのブラウザとして Firefox を使用している場合、IE (管理者のデフォルト) を開くことができます。
「runas」動詞を使用して昇格できることは知っていますが、逆にどのようにしますか? サービスから標準ユーザーのデスクトップのデフォルト ブラウザで URL を開く方法はありますか?
winapi - 非対話型サービス(win32 / .net / powershell)からUAC昇格されたプロセスを開始する
CreateProcessAsUser()を使用してスクリプトと実行可能ファイルを実行することにより、いくつかの自動化タスクを処理するサードパーティのWindowsサービスを使用しています。UACと、APIを介したLUAの昇格の処理方法が原因で、WindowsServer2008で問題が発生しています。
このサービスはLocalSystemとして実行され、「デスクトップとの対話」が有効になっていません。プロセスはAdministratorsグループのユーザーとして実行されていますが、Administratorアカウント(多くのUAC制限から免除されています)では実行されていません。すべてのUACデフォルト設定が設定されています。
任意のコマンドまたはPowerShellコードをサービスに渡すことはできますが、サービスによって開始される、昇格されていない非対話型のプロセスから「抜け出す」ことができないようです。
問題の核心は、昇格されたプロセスを開始するための唯一の(パブリック)APIオプションが'runas'動詞を持つShellExecute()であるようですが、私が知る限り、非対話型から呼び出すことはできませんサービスを実行しないか、「この操作にはインタラクティブウィンドウステーションが必要です」などのエラーが発生します。
私が見つけた唯一の回避策はここに記載されています: http ://www.eggheadcafe.com/software/aspnet/29620442/how-to-proper-use-sendinp.aspx
Vistaでは、プロセスを昇格させるための公式に文書化された方法は、シェルAPI ShellExecute(Ex)のみを使用することです(CreateProcessまたはCreateProcessAsUserではありません)。したがって、アプリケーションはShellExecute(Ex)を呼び出して、SendInputを呼び出すために昇格されたヘルパーを起動する必要があります。さらに、セッション0の分離により、サービスはCreateProcessAsUserまたはCreateProcessWithLogonW(ShellExecute(Ex)は使用できません)のみを使用してインタラクティブデスクトップを指定できます。
..Windowsサービスから昇格されたプロセスを生成する直接的な方法はないと思います。最初にCreateProcessAsUserまたはCreateProcessWithLogonWを使用して、昇格されていないプロセスをユーザーセッション(インタラクティブデスクトップ)に生成することしかできません。次に、昇格されていないプロセスで、ShellExecute(Ex)を使用して、実際のタスクの昇格されたプロセスを生成する場合があります。
.net / powershellコードからこれを行うには、.Net System.Diagnostics.ProcessStartInfoに同等のlpDesktopがないため、CreateProcessAsUserまたはCreateProcessWithLogonWを呼び出すために複雑なP/Invokeを実行する必要があるようです。 「winsta0\default」に設定します。また、LocalSystemにCreateProcessAsUserまたはCreateProcessWithLogonWを呼び出す権限があるかどうかもわかりません。
また、 http://blogs.msdn.com/alejacma/archive/2007/12/20/how-to-call-createprocesswithlogonw-createprocessasuser-in-net.aspx と Processを確認しました。
これらすべてに基づいて、これを行う簡単な方法はないという結論に達しました。私は何かが足りないのですか?これは本当に難しいことではないようです。UACは、非対話型のユースケースを処理するように設計されたことがないように感じます。
そして、Microsoftの人がこれを読んでしまった場合、ShellExecuteが内部で昇格を処理する方法は、Application Information Service(AIS)を呼び出すことであることに気付きました。Win32または.NETAPIを介してAISへの同じ呼び出しを利用できないのはなぜですか? http://msdn.microsoft.com/en-us/library/bb756945.aspx
少し時間がかかってすみません。アイデアをありがとう。
c++ - 複数の ShellExecute 呼び出しの連鎖
次のコードとその実行可能ファイルを考えてみましょう - runner.exe
:
これらの 2 つのバッチ ファイルはどちらも、notepad.exe を実行し、notepad.exe を実行して test.txt を開こうとするように指示するという、本来の目的を果たします。
ここで、次のバッチ ファイルについて考えてみましょう。
これは runner.exe を実行し、コマンド ライン引数の 1 つとして notepad.exe を送信する必要がありますね。次に、runner.exe の 2 番目のインスタンスが notepad.exe を実行する必要がありますが、実行されません。「Windows は 'am' を見つけることができません。名前を正しく入力したことを確認してから、もう一度やり直してください」というエラーが表示されます。argc
引数を出力すると、runner.exe の 2 番目のインスタンスが14になり、Files\Microsoft、SQL、Files\Common などの奇妙なものになります。なぜこれが起こるのか分かりません。コマンドライン引数を使用して、できるだけ多く、または少なくとも 2 つの runner.exe 呼び出しをストリングできるようにしたいのですが、どうすればよいですか?
それが違いを生む場合、私はWindows 7を使用しています。
shell - 単一行のシェルコマンドを使用して、すべてのファイルの特定のテキストを置き換えます
各phpページで呼び出す必要がある、名前が変更されたjsファイルがあります。ここで、シェルを使用してその古い名前を新しい名前に置き換えたいと思います。私が使用しているものはこれです:
しかし、これは次のエラーを出しています:
この交換はどうすればいいですか?
windows-xp - プログラムで Windows XP にフォルダのサムネイルを表示させるにはどうすればよいですか?
ShellExecute
フォルダー パスで呼び出すアプリケーションがあります。これにより、エクスプローラーにフォルダーが表示されます。
ただし、フォルダがサムネイル ビューでコンテンツを表示するように設定されていることを確認したいと思います。これが確実に行われるようにするにはどうすればよいですか?
php - php の shell_exec(),exec() が機能しない
off 値で safe_mode を無効にし、shell_exec()、exec() で 1 と 1 の専用サーバーの両方の機能を試してみましたが、別のサーバーでも機能していました。
delphi - 元のコンソールを継承するプロセスで Delphi の ShellExecute() を使用しますか?
C では、system()
以前にコンソール アプリケーションで関数を使用したことがあり、それを使用して別のプロセスを開始するsystem()
と、それを呼び出したプロセスのコンソール ウィンドウが継承されます。
Delphisystem()
には存在しないためShellExecute()
、新しいプロセスを作成するために使用していますが、新しいプロセスが新しいコンソール ウィンドウに表示されます。それを呼び出しているウィンドウのハンドルを継承させる方法はありますか?
私は使用しました
コンソールウィンドウを取得して のHWND
部分で渡しましたShellExecute()
が、うまくいきませんでした。
c# - C#経由で複数のコマンドライン引数を渡すにはどうすればよいですか
handle.exe というプロセスに C# 経由で複数のコマンド ライン引数を渡す必要があります: http://www.google.com.mt/search?sourceid=chrome&ie=UTF-8&q=handle.exe
まず、ADMINISTRATOR 権限を使用して実行可能ファイルを実行する必要があります。この投稿はまさにそれを達成するのに役立ちました: vista、c# で cmd.exe を管理者としてプログラムで実行します。
しかし、「-p explore」などの実際の行引数を呼び出す次の問題が発生します。
コマンドライン引数を一緒に、または連続して指定するにはどうすればよいですか?
現在のコードは次のとおりです。
ありがとう