「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[Windows]] --[[アカウント]] --[[あるある]] * 目次 [#d9b690d4] #contents *概要 [#p7f2044e] タスク = タスク・スケジューラ = Windowsサービスのため >「タスク・スケジューラもWindowsサービス」です。 Windowsサービス全般のトラブルシュートについて説明します。 *[[アカウント関係>サービス・タスク系のアカウント問題]] [#nda88705] *権限関係([[UAC]]) [#r36372ef] [[UAC]]の問題で動かないようなケースもパニックです。 **タスク スケジューラと[[UAC]] [#q768b5c5] -タスクのセキュリティ コンテキスト~ http://technet.microsoft.com/ja-jp/library/cc722152.aspx~ >タスク スケジューラのセキュリティ コンテキストに対して Administrators グループを使用してタスクが登録されている場合、~ タスクを実行するには、[最上位の特権で実行する] チェック ボックスがオンになっていることも確認する必要があります。 -Windows10 - 管理者権限が必要なアプリを自動起動(スタートアップ) - PC設定のカルマ~ https://pc-karuma.net/windows-10-task-schedule-without-uac-prompt/ **JP1の場合 [#b010e297] -JP1/Automatic Job Management System 3 構築ガイド1~ 6.2.22 UAC機能有効時にAdministrators権限でジョブを実行するための設定~ http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3S0532/AJSX0072.HTM~ >WindowsのUAC機能を有効にしていると,ビルトインAdministratorを除く,すべての~ AdministratorsグループのOSユーザーは,Administrators権限が無効な状態で動作します。~ JP1/AJS3では,Administrators権限を必要とするジョブ※が実行できなくなる場合があります。~ ・・・~ 「UAC機能有効時にAdministrators権限でジョブを実行するための設定」を有効~ にすることによって,UAC機能が有効の場合でもAdministratorsグループの~ OSユーザーでAdministrators権限が必要なジョブを実行できます。~ *ネットワークアクセス [#h3eb0eb4] ネットワーク経由で、ファイル共有やプリンタにアクセスする場合。 **[[ネットワーク間認証の問題>サービス・タスク系のアカウント問題#faa96fc2]]の問題 [#e8853015] **[[リモート・コマンドと実行アカウントの考慮>サービス・タスク系のアカウント問題#g35786fe]] [#t3e06d55] *帳票印刷 [#m80b5499] Windowsサービスやタスク スケジューラで帳票ツールを使用しないで印刷を行う推奨された方式はない。 **選択肢 [#yceaf61a] ***Word などを利用する [#if8ceb7d] -[[Office サーバー サイド オートメーション]]はマイクロソフトの非推奨 -一部、裏技的な方法もある。~ 同じフォルダーにあるファイルのグループを印刷するマクロ~ http://support.microsoft.com/kb/107880/ja --Office サーバー サイド オートメーションに該当しなければ良いので、~ サーバ側にゲストOSを用意してログイン状態でログイン・アカウントから~ Office オートメーションを実行すればこの問題には抵触しません。 --ただし、サーバ側にクライアントのゲストOSを用意する必要があるので~ ソリューションや製品の既定の処理方式としては問題のように思います。 ***APIを使用する [#ue0a71e1] 帳票ツールが出力するレベルを求めると難易度が高い。~ また、帳票定義もないので開発・保守も難しくなる。 -.NET~ .NETの印刷機能もサーバサイドでの利用は非推奨~ PRB: エラー ASP ページから、または Windows サービスからの印刷時に~ http://support.microsoft.com/kb/324565/ja~ --サービスからの.NET Framework印刷クラスの使用はサポートされていません。 --印刷するように設計されたすべてのサービスは、Win32 Api を直接使用する必要があります。 -Win32 API~ C++ の知識が必要となる。文字だけであればそれほど難しくはない。 --プリンタプログラミング (その1)~ http://www30020u.sakura.ne.jp/nohito/program/memo/lecture/printer-1.html --プリンタを利用する (その2)~ http://www30020u.sakura.ne.jp/nohito/program/memo/lecture/printer-2.html --プリンタを利用する (その3)~ http://www30020u.sakura.ne.jp/nohito/program/memo/lecture/printer-3.html ***帳票ツールを使用する [#ab2e736f] これが推奨だが、要件によってはオーバースペックで、費用もかかってくる。~ 一番安い Active Reportsで、開発者ライセンス=1、サーバライセンス=1 で20万円。~ #カッチリしていない帳票→レポートなら、.NET同梱のReportViewerも使用できる。 **帳票ツール [#g555f2de] ***OSS [#w5a472bd] -NPOI -Fisshplate.net -EPPlus ***Excel帳票 [#xfcf2809] -ExcelCreator -ComponentOne Studio -ODBC -Open XML SDK 2.0 -support.microsoft.com --ADO を使用して Excel ブックのデータの~ 読み取りおよび書き込みを行う方法 (ExcelADO)~ http://support.microsoft.com/kb/278973/ja~ --Visual Basic .NET と ADO.NET を使用して~ Excel ブックのレコードの取得と変更を行う方法~ http://support.microsoft.com/kb/316934/ja~ -サーバーサイドにおける Open XML を利用したExcel ファイル~ の自動生成方法(ExcelPackage というOSSの紹介) --(その1)~ http://crieilluminate.wordpress.com/2009/06/02/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%B5%E3%82%A4%E3%83%89%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B-open-xml-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9Fexcel-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB-2/ --(その2)~ http://crieilluminate.wordpress.com/2009/06/02/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%B5%E3%82%A4%E3%83%89%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B-open-xml-%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%9Fexcel-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB/~ **その他 [#sd0b5b14] -SharePoint --SharePoint 2010 を使うと、サーバ側で、Word を pdf に変換できるらしい。 ---Word Automation Services の概要~ http://msdn.microsoft.com/ja-jp/library/ee558830.aspx --SharePoint 2013 では、 PowerPoint も pdf 変換できるらしい。 ---PowerPoint 2013 新機能 Overview (SharePoint 連携)~ http://crieilluminate.wordpress.com/2012/10/10/powerpoint-2013-preview-%E6%96%B0%E6%A9%9F%E8%83%BD-overview-sharepoint-%E9%80%A3%E6%90%BA/ -Windows Live SkyDrive で Office Web Apps を使用する~ http://office.microsoft.com/ja-jp/web-apps-help/HA101231889.aspx --SkyDrive 使うと、Word を pdf に変換できる *その他 [#gda83bf4] **タスク・スケジューラの設定 [#g66ace73] ***設定可能な項目 [#h0bd3e85] -[[実行アカウントの指定>#nda88705]] -[[UACが有効な場合、Administratorsグループ権限の付与>#q768b5c5]] -作業フォルダ --[Windows]タスクスケジューラで作業フォルダを指定する方法 DelightMode~ http://www.delightmode.jp.net/win-taskscheduler.html ***参考情報 [#me82fda6] --タスク スケジューラの概要~ http://technet.microsoft.com/ja-jp/library/cc721871.aspx ---タスク スケジューラのトラブルシューティング~ http://technet.microsoft.com/ja-jp/library/cc721846.aspx **非対話型プロセス [#p5c3a582] Windowsサービスやタスク スケジューラからの~ UIを伴うWindowsアプリケーションの起動は推奨されない。 ***Windowsサービス [#v4b35fda] 以下のフォーラムのスレッドでは、非対話型プロセスで偽装ユーザを~ 対話ウインドウステーションに追加する方法を説明している。 -C#のWindowsサービスからのProcessによるEXE起動について - Insider.NET - @IT~ http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32959&forum=7 -補足 --WinSta0\default は、コンソールへログインした~ 状態の desktop なので、条件が変わるかもしれません。 ---手を離してるか、 ---スクリーンセーバになってるか、 ---Winlogin の ログイン画面が出てるか --このため、JP1 の KB にあった、~ 「デスクトップとの対話を有効にする方法」では、~ WinSta0\defaultではなく、自前の desktop を作ってた、と思います。~ --Terminal Service (Remote Desktop Service) が~ 有効になると、挙動が、がらっと変わり同じに動かない可能性もあります。 ***タスク スケジューラ [#b95a97b8] バックグラウンドからのUIオートメーションはサポートされない。~ 従って、以下のように設定をして、フォアグラウンドで実行できるようにする。 -ログオン・ユーザの実行アカウントで実行させ、 -タスクスケジューラに以下の設定を行う。 --「ユーザがログオンしている時のみ実行する。」にチェックを入れる --「操作の編集ダイアログ」の ---「プログラム/スクリプト」に「cscript」を定義し、 ---「引数の追加」に「UIオートメーションを実行するVBScriptのパス」を指定する。 参考: -タスクスケジューラでvbsを実行した時、起動したソフトが最前面… - 人力検索はてな~ http://q.hatena.ne.jp/1373728119 -Windows10 - 管理者権限が必要なアプリを自動起動(スタートアップ) - PC設定のカルマ~ https://pc-karuma.net/windows-10-task-schedule-without-uac-prompt/ **ユーザ・プロファイル [#e6fe2f00] ユーザ・プロファイルが無い場合にエラーとなるようなAPIは使用する事ができません。~ この場合、必要に応じてユーザ・プロファイルをロードする必要があるようです。~ ***該当する処理 [#nbfd2dbb] 以下の様な処理が該当します。 -レジストリのHKEY CURRENT USER -My Documents、Desktop等~ HOMEPATH=\Documents and Settings\ユーザ名~ 以下のディレクトリに含まれる情報 -ネットワーク ドライブの接続および切断 -.etc --ユーザー プロファイルに保存される設定~ http://technet.microsoft.com/ja-jp/library/cc781142.aspx ***処理の例 [#aec9f79c] ネットワーク ドライブの接続および切断を例にとると、 >例えば、net use(WNetAddConnection)~ を使用してネットワーク・アクセスをすると、 Windowsの -ファイル共有 -プリンタ共有 -ローカル・ドライブ -ローカル・プリンタ といったデバイスへのマッピングを覚えます。 -参考 --Windows XP でネットワーク ドライブの接続および切断を行う方法~ http://support.microsoft.com/kb/308582/ja --C#でのWNetAddConnection3の使い方を教えてください~ その他(プログラミング) 解決済 | 教えて!goo~ http://oshiete.goo.ne.jp/qa/4423732.html しかし、これは、情報をプロファイルに覚えるので、~ 対話型ユーザでログオンしている必要があるようです。 Windowsサービスやタスク スケジューラの処理が、 >ユーザ・プロファイルが存在しない実行カウントのコンテキスト上で実行される場合、 必要に応じてユーザ・プロファイルをロードします。詳しくは[[コチラ>Office サーバー サイド オートメーション#y12437e8]]をご参照下さい。 **[[Office サーバー サイド オートメーション]] [#t6f474b4] Office オートメーションをタスクスケジューラから実行しようとした場合に、 >[[Office サーバー サイド オートメーション]] の問題に合致するケースがあり得るので注意する必要があります。 **[[.bat>BAT]]はcmd.exeを経由します [#ccb7761d] ので、標準入出力が用意されます。 -Windowsサービスやタスクスケジューラから直接起動されると、標準入出力が無い。 -標準入力 が用意されないことで、動作がおかしくなるコマンドもあるようです。 ---- Tags: [[:あるある]], [[:Windows]], [[:アカウント]], [[:セキュリティ]], [[:障害対応]], [[:デバッグ]]