私のWindows 7環境では、バックグラウンドで実行されることになっている、主にバックアップ用のいくつかのプロセスがスケジュールされています。
ただし、バックグラウンドで静かに動作するだけでなく、タスクスケジューラが黒い(コンソールのような)「taskeng.exe」ウィンドウをポップアップ表示します。ウィンドウは他のすべてのウィンドウの前面に表示されます。幸い、キーボードのフォーカスを奪うことはありませんが、すべてのビューをブロックします。
このウィンドウを回避する方法はありますか、または少なくとも、VISUALフォーカスを奪うことなく、ウィンドウを背景に表示させますか?
バウンティが適用された後に編集された例:
これがWScriptを使用する最後の試み(RunSignatured.batという名前のファイル)です。
Set Shell = CreateObject("WScript.Shell")
Shell.Run C:\Users\danh\Bin\signatured.bat, 0, False
Signatured.batファイルには以下が含まれます。
cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\Java.exe" Signature
より具体的には、ダニエルRヒックスの報奨金/例に当てはまりますが、それでも元の問題に適用できると思います。
タスクスケジューラから起動されるバッチファイルの場合は、最小化/非表示のバッチファイルを起動するだけでなく、バッチファイル自体を変更して、コマンドを実行できないようにする必要があります。
だから変更:
cd C:\Users\danh\bin
"C:\Program Files\Java\jre7\bin\Java.exe" Signature
次のようなものに:
cd C:\Users\danh\bin
start /b "C:\Program Files\Java\jre7\bin\Java.exe" Signature
または、バッチファイルを完全に削除して、タスクスケジューラから直接起動している(VBS)スクリプトからすべてを実行することもできます。
何かのようなもの:
Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin"
Shell.Run "C:\Program Files\Java\jre7\bin\Java.exe Signature", 0, False
techie007の提案に応じてDanHによって実装されたソリューション、報奨金を満たす:
RunSignatured.vbsという名前の1つのファイル。
Set Shell = CreateObject("WScript.Shell")
Shell.CurrentDirectory = "C:\Users\danh\bin"
Shell.Run "Java.exe Signature", 0, False
フルパスを指定する場合、テクニックはProgram Filesの空白で機能しないため、上記はJava.exeがパスにあることに依存していることに注意してください。この問題を回避する他の方法は間違いありませんが、それは他の人が発見することです。
それから加えて RunSignature.vbs
タスクスケジューラの[アクション]の[プログラム/スクリプト]名として。
スケジュールされたタスクを別のユーザーとして実行すると、通常のアカウントのインタラクティブデスクトップとまったくやり取りできなくなります。これは確かに、私が管理しているWindows 2003サーバーで機能するようです。タスクがこの別のユーザーとしてunするときに必要なものにアクセスできるように、ファイルのアクセス許可およびその他の認証の詳細が設定されていることを確認してください。
編集:または、コンソールツールを直接実行する代わりに、WScript.Shell.Runを使用してそれを実行する小さなスクリプトを作成し、変更」オプション:
' sample script: c:\scripts\test.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "c:\location\of\tool\utility.exe", 7
次に、タスクスケジューラを使用してこれを実行します(コマンドラインはwscript c:\scripts\test.vbs
)ツールを直接呼び出す代わりに。バッチファイルやその他のスクリプトも同様に呼び出すことができるはずです。 「完全に非表示」オプションもあります(上記の7を0に置き換えます)。ただし、どちらの場合も、非表示/最小化は初期ウィンドウのみを制御します。ツールがそれ自体を開くと、以前と同じようにフォーカスを奪います。
Runメソッドのオプションの完全なリストについては、 http://msdn.Microsoft.com/en-us/library/d5fk67ky%28VS.85%29.aspx を参照してください。
次のようにスケジュールされたタスクを実行してみてください:
C:\ Windows\System32\cmd.exe/c start/b c:\ fullpath\mybackup.bat
start /b
は、新しいウィンドウを作成せずにアプリケーションを起動する必要があります。
これが機能しない場合は、taskeng.exeウィンドウを非表示にするスタンドアロンの AutoIt スクリプトを作成できます。 AutoItスクリプトは、.exeにコンパイルできます。
.exeがmybackup.batファイルの最初の行になります。 AutoItコードは次のようになります。
WinSetState( "taskeng"、@SW_HIDE)
4trayMinimizer を試してください。デフォルトで非表示になっているアプリを定義できます。
タスクスケジューラから起動したアプリケーションを非表示にする最も簡単な方法は、「ユーザーがログオンしているかどうかにかかわらず実行する」に設定することです。この設定は、スケジュールされたタスクのプロパティの[全般]タブにあります。
これが私が使用するSyncToyスクリプトです。ファイルの場所を囲む複数の引用符に注意してください。
' SyncToy Scheduler
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files\SyncToy 2.1\SyncToyCmd.exe"" -R" ,7
いくつかの調査を行った後、SQLyogを使用して正確な問題が発生しました。invisible.vbs
というファイルを作成し、このコードを挿入して修正しました。
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "C:\Program Files (x86)\SQLyog\"
WshShell.Run "SJA.exe C:\Users\REPLACE_UR_USER\Desktop\test.xml -lC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sja.log -sC:\Users\REPLACE_UR_USER\AppData\Roaming\SQLyog\sjasession.xml ", 0
タスクスケジューラを作成してinvisible.vbs
ファイルを実行するだけです。
SQLyog MySQL GUI がインストールされているようです。これにより SQLyogジョブエージェント の実行がスケジュールされました。自分自身を隠そうとしないコンソールアプリケーションのようです。
タスクスケジューラでSQLyogを参照するタスクを探し、そのエントリを修正する必要があります。 cmd呼び出しの場合は、/b
をパラメーターリストに追加してみてください。それが実行可能ファイルへの単なる呼び出しである場合、 この私の答え を考慮して修正できます。
このエントリを見つけるのに問題がある場合は、 autoruns を使用して、SQLyogの起動方法を見つけます。 regeditを使用して、SQLyogに関するすべての言及や、インストールディレクトリの名前を検索することもできます。
もちろん、必要がなければSQLyog MySQL GUIをアンインストールすることもできます。
SQLyog MySQL GUIをインストールしていない場合、コンピュータが感染している可能性があります。 Process Monitor を使用してポップアップが表示されるタイミングを確認し、それがsystem32のtaskeng.exeであるか、または Taskeng.exeに似ている の1つであるかを確認できます。