沢です。
初心者です。
プログラムを起動するのに、プログラムを他のパソコンにコピーしても起動しないようににしたいのですが、windowsにあるものを利用したいのですが、
このような事が出来るのなら教えてください。
https://www.petitmonte.com/bbs/answers?question_id=686
でしょうか?
他にも、パソコンごと違うのだから、
ハードウェアIDなどを保存しておいて、わかりにくいようにどこかに保存(実行ファイルや実行に必要なDLLのリソースなどに書き込んでおくといいかも?)するなどしておけば、
以後はそのリソースが存在するかどうか(存在しない場合は初起動)、
そのIDがその場で生成したものとあっているかでわかると思います。
実際にはハードウェアが変わる可能性もありますので、複数のIDをあわせておいて、
それと何パーセントかあってれば、同じと見なすなどする必要がありそうですが。
# まあ、この方法では初起動より前にコピーすればだませてしまいますが、
# 突き詰めればかなり不可能に近いと思うので、ある程度は諦めるしか…。
パソコンを特定するのだから、ハードウエアーの違いを調べるか
自前の情報を置くかして、ソフト起動時に照らし合わせることになると思います。
CPUやメモリーやHDの情報を取得する方法の他、こんなのは如何でしょうか?
最初の起動時に、設定などを保存するファイルを1個作成します。
作成したファイルの作成日時を元に暗証番号を作ります
2回目以降の起動でファイルがあれば日付と暗証番号を照合してOKなら起動する。
設定ファイルはコピーすれば日付が変わりますし、移動すれば元では使えなくなります。
但し、ファイルの作成日時自体を変更することもプログラムで出来ますので
完璧ではありませんが、、、。
Excel Wordにはプロダクト IDがあります。
プロダクト IDをEdit1に表示する方法があるのでしたら教えてください。
あのプロダクトIDって、Office をインストールしたときの ID でしょ。
Delphiとは無関係では? 必ずインストールしてあるとも限らないし。
沢さんは、レスをいただいても無視するんですか?
プロダクトID を取得できたとしてと、他のコンピュータで起動できなくするには
どうするんでしょうか。
プロダクトID を利用して
name1にプロダクトID の番号 neme2をプロダクトIDをEdit1に表示した番号
begin
If name1<>name2 then
begin
Close;
end;
If name1=name2 then
begin
Form2.ShowModal;
end;
この様に使用したらどうかなとおもいまして
いや、コピー先でも同じ結果になるのでは?
問題は、オリジナルプログラムが最初に起動されたときのプロダクトIDを
どうやって記憶するのかです。外部ファイルやレジストリを使わないで、
となると、皆目見当がつきませんが。
つっかさんへ
Excel WordのプロダクトIDは、ヘルプのバージョン情報で表示されます。
name1に記載しなす。
>沢さん
>Excel WordのプロダクトIDは、ヘルプのバージョン情報で表示されます。
そういうことじゃなくて、コピー元のプロダクトIDをどこに記憶するかではないですか。
それと、たかみちえさんと、Takuさんに対する返事はしないのですか。
たかみちえさん、Takuさん、つっかさん有難う御座います。
ファイルを作成したら一番よいのでしょうが、現在パソコンに有る物を利用したいのです。
又、なかにはCPUやメモリーやHDの情報は、同じ場合があります。
乗りれさん、有難う御座います。
さきばして、前ばっかりみていました。めがさめました。
プロダクトIDやユーザー名など習得し、EidtやMemoなどに表示する方法を調べるには、何処で探しららよいのでしょうか?
拡張子の種類によってもつがうとおもいますので、宜しくお願いします。
> Excel WordのプロダクトIDは、ヘルプのバージョン情報で表示されます。
> name1に記載しなす。
うーむ、これはコピーされたプログラムを起動できなくするんじゃなくて、
name1 にプログラムで何かをハードコートして、特定のPCのみで起動でき
るようにしたい、つまり、特定の1台のPCのみで動作するプログラムを
つくりたい、ということですね?
Excel や Word のプロダクトIDを取得する方法は知りませんが、わたし
だったら、そのPCのレジストリエディタをつかって、適当なエントリを
レジストリにつくります。そして、プログラムでは起動時にそのエントリ
の有無を確認して、なかったら即終了、というふうにしますが。
#リバースされたら、解読されますね。ComputerName と組み合わせる
#とか、もっと複雑に出来るかも知れません。
こんなのはどうでしょう。
1. WindowsのプロダクトIDのMD5値+メールアドレスの文字列を生成する(これをキーSとする)。
2. キーSをソフトの運用者(販売会社?)にメールで送る。
3. 運用者はメールで受け取ったキーSで暗号化したファイルを送り返す。
4. ユーザーは受け取ったファイルをアプリケーションと同じディレクトリに置く。
4. アプリケーション実行時にファイルの内容をキーSで復号化し、成功したらアプリケーションを実行する。失敗したらエラーを出力する。
最後の4.は5.の間違いでした。
補足します
1.のキーにメールアドレスを含めるのは
ネット上でキーとファイルを公開されるのを防ぐ為(プロダクトIDの公開されたWindowsとの併用を防ぎます)と、
3.で同一のメールアドレスを複数回受け取った時に、ファイルを再発行するかどうかをコントロールする為(三回までなら可など)です。
1.でプロダクトIDをMD5化するのは運用者側にWindwosのプロダクトIDを知らせない為です。
これで顧客情報が流出した場合に被害を抑えられます。
この方法で考えられる抜け道は社内でWindowsを使いまわしていた場合、暗号ファイルもまた使いまわされてしまうことです。
対策としてはプロダクトID以外にもハードウェアに依存した情報を含める事で
例えばLANカードのMACアドレスを含めるとそのLANカードがないと動きません。
いずれにしても特定のPCでしか動かさないようにするにはネットワーク経由の認証が不可欠です。
これは運用・管理コストが高くつくので導入に値するかどうかをよく検討したほうがよいと思います。
つっかさん、tomoさん、ありがとう御座います。
参考にさせて頂きます。
たかみちえさん、Takuさん、乗りれさん、ありがとう御座います。
今後も、宜しくお願いします。
ツイート | ![]() |