0

サーバー上のアカウントにログオンするように誰かに要求することなく、コールドリブート後でも機能するWindows Server 2008 R2(.NET 3.5.1)のアプリケーションに取り組んでいます。

アプリケーション自体については少し説明しますが、会社での従業員の労働時間を登録するためのc#アプリケーションで記述されています。ユーザー(従業員)は、バーコードスキャナーでスキャンされているカードを持っています。各スキャンは、「作業開始」または「作業停止」のいずれかを意味し、すべてがxmlファイルにシリアル化され、後で変更されて.csvに入れられますが、そうではありません。重要です。

バーコードスキャナーはキーボードとして機能しているため、すべてのコードはキーボードからPCまでのように「入力」されています。コンソールアプリケーションにフォーカスがない、またはまったく表示されていないにもかかわらず、アプリケーションにキーを読み取らせました。

私がする必要があるのは、コールドリブート後でもそのアプリケーションを機能させることです。それは完全に自動化されている必要があります。

これまでのところ、2つのアプローチを考え出しました。1つは、別のプロセスを存続させるサービスを作成することです(機能しない場合は、オンにするだけです)。これはあまりうまくいきませんでした。すでに作成しました。別のプロセスを起動するサービスですが、プロセスの動作が異なります。自分で実行すると、プロセスとの通信がないため、プロセスが正しいかどうかさえわかりません。

もう1つは、アプリを登録/ microsoft / windows / current version / runに配置し、特権が制限されているユーザーの自動ログオンを有効にすることです。これは実際には機能する可能性がありますが、完全な解決策ではありません。結局のところ、ユーザーを24時間年中無休でサーバーにログインさせたくないからです。

私はあなたのほとんどが私よりもプログラミングの経験が豊富であることを知っているので、私の問題を解決する方法を解決する方法を教えてください

Lichoniespi

4

2 に答える 2

0

最初のアプローチを使用してサービスを作成し、実行中のアプリケーションと通信するには、ネットワーク ソケットまたはパイプを使用します。サービスについては、(システムではなく) 既存のユーザー アカウントを使用していることを確認し、デスクトップと対話できるようにします。

于 2012-09-03T19:45:30.467 に答える
0

選択肢は、システムの物理的なセキュリティ (通行人がバーコードのスキャン以外に多くのことを実行できるかどうか) によって異なりますが、簡単にアクセスできるデスクトップであると仮定しましょう。その場合、ログインしているユーザーはおそらく必要ありません。

サービス アプローチを使用します。キーボードにアクセスするための別のプロセスは必要ありません。タイプのグローバルフックを作成しますWH_KEYBOARD_LL

このようにコールバック関数を宣言し、SetWindowsHookEx.

于 2012-09-03T19:53:43.550 に答える