コンピューターをActiveDirectoryドメインに追加するソフトウェアを作成しようとしています。私が満たす必要がある1つの基準は、マシンを適切なOUに追加する必要があることです。これを行うために、アドレスを含むサイトの場所のセットリストがあります(これがOUを決定する方法です)。このリストは現在ACCDBファイルの形式ですが、アクセスリストは変更されないため、これをアプリケーションに含めたいと思います。
私が目にするものはすべて、DBファイルをサーバーやローカルマシンなどの別の場所に接続することを望んでいます。私の好みは、DBファイルを参照またはプログラムの.exeファイル自体の内部の何かとして使用することです。私は恐ろしく明白な何かを見逃しているかもしれませんが、それは数日間私をいじっているので、私は助けを求めています。
明確にするために、このソフトウェアは自己完結型でなければなりません(インストーラーなし)。また、ドメインに参加するための適切なOUを決定できる必要があります(PCがドメインに参加するまで共有にアクセスできません)。また、間違いを避けるために十分にユーザーフレンドリーである必要があります。つまり、正しい場所に移動する必要がある複数のファイルをコピーして配布することは避けたいということです。これが、ACCDBファイルをオンザフライで使用するためにアプリケーションに埋め込みたい理由です。
これは静的データであるため、作業ははるかに簡単になります。このデータの永続化、プログラムへの変更の再利用、ユーザーが誤って何かを削除するなどの心配はありません。アプリケーションに埋め込まれたリソースを使用するだけで済みます。リンクでは、画像ファイルを使用して例に従ってください。テキストファイルの例では、データベースが破損します。
ただし、これを行うにはまだトリックがあります。問題は、Windowsに含まれているAccessエンジンがデータベースをリソースとして開くことができないため、このファイルをローカルハードドライブに保存する必要があることです。良いニュースは、プログラムが必要に応じてこれを実行し、ユーザーに特定の場所にファイルを配置するように求めるのではなく、それが正しいことを確認できるため、見た目ほど悪くはないということです。
解凍するときにファイルを置く場所については...最も安全で最適な場所はアプリケーションデータフォルダです。この呼び出しの結果を確認することで、このフォルダーのパスを簡単に取得できます。
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
これは、あなたの標準的な特権ユーザーがパス与える行う書き込みアクセス権を持って、ユーザーに関係なく。
要約すれば:
Environment
オブジェクトを使用してアプリケーションデータパスを取得します。FileStream
#2からのパスに基づいてファイルに書き込むためにを開きますusing
ブロックを適切な場所に配置するのと同じくらい簡単です。このように、最終的な.exeファイルを配布するだけで、ユーザーはデータベースを使用するための特別なアクセス許可を必要としません。ユーザーがファイルを削除しても心配する必要はありません。それはまだアプリケーションに埋め込まれており、起動するたびに必要に応じて再作成されます。
欠点は、賢いユーザーがデータベースを操作して、望ましくないOUになってしまう可能性があることです。これについて心配する必要がある場合は、埋め込みデータを使用するのではなく、プログラムにWebサービスをチェックさせることを検討する必要があります。埋め込んだものはすべて、最終的にエンドユーザーが変更できます。プログラムを再構築したり再配布したりすることなく、組織の進化に合わせてマッピングデータを更新できるため、Webサービスも優れています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加