1

単一の実行可能ファイルである小さなアプリケーションがあります。コンテキストとして、これはシン クライアント コンピュータに展開され、起動時に自動的に実行されます。ユーザーには、このアプリケーションを閉じる権限がありません。

ただし、アプリケーションを簡単に更新できる必要があります。これらのステーションには多くの場合、事前に無効にする必要がある書き込みブロッカー* があるため、どのような種類の自動更新ルーチンも実行するようにソフトウェアを作成できません。

管理者としての最も簡単な解決策は、シン クライアントで提供されるさまざまなツール、または必要に応じてグループ ポリシー/スクリプトを使用して、古い EXE に新しい EXE をコピーすることです。更新はすぐに有効である必要はありません。次の再起動で問題ありません。

これに関する問題は、もちろん、実行可能ファイルが使用中であり、上書きできないことです。これを可能にする最善の方法は何ですか? ソフトウェアを完全にメモリにロードして、そこから実行しますか? exeを一時フォルダーにコピーしてからコマンドラインスイッチで実行するルーチンを実行して、無限ループにならないようにしますか?

※これにより混乱が生じた可能性があります。これらは Windows XP / Windows 7 Embedded マシンです。ほとんどの場合、ファイル システムの書き込みがキャッシュ ドライブに透過的にリダイレクトされることを除けば、通常のコンピューターと同じように機能します。再起動すると、すべての変更が完全に元に戻ります。マシンを更新する通常のスクリプトは次のようになります。

Disable Write Blocker 
Reboot Machine
Copy Files
Reboot Machine
Enable Write Blocker
Reboot Machine

ただし、通知するメカニズムがないため、再起動するたびにアプリケーションが自動起動します。そのため、スクリプトが実行されると、実行可能ファイルはまだ使用されています。

4

2 に答える 2

0

Windows のMoveFileExを DelayUntilReboot オプションで使用できる場合があります。

C# からこれを行うには、Windows API への呼び出しを設定する方法を示すこの回答を参照してください。

注: 通話には管理者権限が必要だと思います。

于 2013-05-24T10:28:12.233 に答える
0

シャドウ コピー アセンブリと呼ばれるものを利用できます。ネットを検索すると、たくさんの例が見つかります (SO と Codeproject にもあります)。

明らかに、アプリケーションは、書き込み保護が無効になっている場合にのみ更新できます。FBWF または EWF を使用していますか? アプリケーション フォルダーを書き込み保護から除外することもできます。

于 2013-05-24T11:06:10.243 に答える