解決したい問題
Windowsサービスを作って、そのexeをタスクスケジューラに登録をして定期的に動かしたい。
しかし毎回コンソール画面が出てしまう。どうしよう…。
解決策1
①exeを実行するbatを作って、
②batを動かすvbsを作って、
③そのvbsをタスクスケジューラに登録する。
C:\hoge.exe
C:\hoge.bat
C:\hoge.vbs
@echo off
call "C:\hoge.exe"
Dim oShell
Set oShell = WScript.CreateObject("WSCript.shell")
oShell.run """"+"C:\hoge.bat"+"""",0
Set oShell = Nothing
※hoge.vbsの三行目
oShell.run """"+"C:\hoge.bat"+"""",0
みたくダブルクオーテーションで囲っている理由は、開発時のPathに 【C:\Users\hoge\Documents\Visual Studio 2015\
】みたく空白が入っていた為。
解決策2(状況が限られる)
タスクスケジューラ登録時のセキュリティオプションで、
”ユーザーがログオンしているかどうかにかかわらず実行する(W)”にチェックを入れる。

ここにチェックを入れておけば、実行時にコンソールが出なくなる。
ログオンしているユーザと、タスク実行時に使うユーザを変えることでも出来るらしい。
あとがき
テスト環境では解決策1であるプログラムを動かしていたが、そのプログラムを入れる先は必ず”ユーザーがログオンしているかどうかにかかわらず実行する(W)”にチェックを入れる。
となっていたため、最終的にbatとvbsがいらなくなった。
他にコンソールを出さない方法があればご教授願いたい。