C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ライセンス認証について


(過去ログ 132 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■77992 / inTopicNo.1)  ライセンス認証について
  
□投稿者/ 澤田 (1回)-(2015/12/06(Sun) 16:59:54)

分類:[C#] 

ライセンス認証を下記のIPv6でやっているのですが、
認証がうまくいかない方が多々いらっしゃるので、
HDDのボリュームシリアルにて認証にしようと思うのですが、
以下のソースをHDDボリュームシリアルに書き換える場合はどうすれば良いのでしょうか(T_T)
後、何故か不正起動を想定して自分のIPを消した状態で起動させてみると本来は表示されるはずの警告も出ないのですが、根本的な書き方が間違っているのでしょうか(T_T)

よろしければHDDボリュームシリアル等の修正点を書き直したものを記載していただけますととても助かります(T_T)


private void button6_Click_1(object sender, EventArgs e)
{
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
String my = "IPv6を入力している"; //admin
String USER1 = "IPv6を入力している"; //USER名
String USER2 = "IPv6を入力している";//USER名
foreach (NetworkInterface adapter in adapters)
{
if (adapter.OperationalStatus == OperationalStatus.Up)
{
IPInterfaceProperties ip_prop = adapter.GetIPProperties();
UnicastIPAddressInformationCollection addrs = ip_prop.UnicastAddresses;
foreach (UnicastIPAddressInformation addr in addrs)
{
Console.WriteLine(addr.Address.ToString());
if (account == 0)
{
if (USER2 == addr.Address.ToString() || USER1 == addr.Address.ToString() || my == addr.Address.ToString())
{

button6.Visible = false;
MessageBox.Show("認証完了しました。\", "認証完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.player = new SoundPlayer((Stream) Properties.Resources.w221);
this.player.Load();
if (this.player.IsLoadCompleted)
{
this.player.Play();
}
else
{
MessageBox.Show("未登録のIPアドレスです", "警告", MessageBoxButtons.OK, MessageBoxIcon.Information);
account = 0;
Close();
}
引用返信 編集キー/
■77994 / inTopicNo.2)  Re[1]: ライセンス認証について
□投稿者/ 魔界の仮面弁士 (588回)-(2015/12/06(Sun) 17:57:12)
No77992 (澤田 さん) に返信
> HDDのボリュームシリアルにて認証にしようと思うのですが、

HDDシリアルではなく、ボリュームシリアルでしょうか?

ボリュームシリアルというんは、コマンドプロンプトから
 DIR C:
などを打ち込んだときに、
 ドライブ C のボリューム ラベルは LABELNAME です
 ボリューム シリアル番号は ****-**** です
と表示される値のことですよね。

であれば、こんな感じで取得できます。


string drive = "C:";

var diskInfo = new System.Management.ManagementObject(
  "Win32_LogicalDisk.DeviceId=\"" + drive + "\"");

diskInfo.Get();

string serialNumber = diskInfo["VolumeSerialNumber"].ToString();

Console.WriteLine(serialNumber);



> HDDのボリュームシリアルにて認証にしようと思うのですが、

ボリュームシリアルは、それ単独では認証には向きません。

たとえば、DOS4の場合、1995年12月26日 午後9時55分41秒94 にフォーマットされた場合、
ボリュームシリアルは 3578-1D02 となりますが、これは下記の式によって算出されます。

 月日  12/26  0C 1A    時分  21:55  15 37
 秒数  41.94  29 5E    西暦   1995    07CB
 ----------------------    ----------------------
 合計         35 78    合計         1D 02


このように、フォーマット処理を行ったときのタイムスタンプであることから、
メーカー製 PC のように、ディスクイメージを複製してセットアップされた PC 群は、
別の端末であっても、すべて同一の文字列を返すことが多いですし、それに
再セットアップでフォーマットすると、別の文字列になってしまいますよね。


> 後、何故か不正起動を想定して自分のIPを消した状態で起動させてみると
> 本来は表示されるはずの警告も出ないのですが、根本的な書き方が間違っているのでしょうか(T_T)
「自分のIPを消した状態」というのが何を指しているのか読み取れなかったのです、
その消した状態で該当コードを『ステップ実行』し、それぞれの変数の内容が
想定してある通りのものであるのか確認することで、問題点が見えてくるかと思います。



> よろしければHDDボリュームシリアル等の修正点を書き直したものを記載していただけますととても助かります(T_T)
それは質問ではなく、開発依頼ですよね。この掲示板では、その手の依頼は嫌われる傾向にあります。

この掲示板では、(広告・宣伝は NG とはいえ)お仕事の依頼は禁止されていなかったと思いますが、
開発相談ではなく開発依頼なら、開発依頼系の専門サイトや代行業者等に頼ったほうが良いと思います。



一方で、自己努力の上でどうしてもできなったものについては、問題箇所を
明確にした上で投稿すると、比較的具体的な回答が得られることが多いです。

引用返信 編集キー/
■77997 / inTopicNo.3)  Re[2]: ライセンス認証について
□投稿者/ 澤田 (3回)-(2015/12/07(Mon) 00:17:05)
2015/12/07(Mon) 00:47:52 編集(投稿者)
2015/12/07(Mon) 00:47:50 編集(投稿者)
2015/12/07(Mon) 00:47:46 編集(投稿者)

<pre><pre>魔界の仮面弁士様、ご丁寧に返信有り難うございます(^^)

何度も厚かましいのですが、問題点としましては、
現状お客様のIPv6の情報取得は以下のソースで行っているのですが

private void button1_Click(object sender, EventArgs e)
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
int num1 = 0;
foreach (NetworkInterface networkInterface in networkInterfaces)
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)
{
foreach (UnicastIPAddressInformation addressInformation in networkInterface.GetIPProperties().UnicastAddresses)
{
Console.WriteLine(addressInformation.Address.ToString());
if (num1 == 0)
{
PhysicalAddress physicalAddress = networkInterface.GetPhysicalAddress();
this.textBox1.Text = addressInformation.Address.ToString();
this.textBox1.AppendText(":" + physicalAddress.ToString());
int num2 = (int) MessageBox.Show("上記に表示された文字列をコピーして管理者に送ってください。", "ユーザー情報抽出完了", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
num1 = 1;
}
}
}
}
}


本来はリンクローカルIPv6のfe80::から始まるIPのみを取得したいのですが、数人に一人は2001:や240f:等違ったものを抽出してしまいます^^;
試行錯誤したのですが、本来抽出したいリンクローカルIPv6のfe80::から始まるIPのみを抽出する修正方法がわからずに参っている状態です(T_T)。。。

何処を変更すれば良いのかご教授願えますと助かりますm(_ _)m

</pre></pre>
引用返信 編集キー/
■77998 / inTopicNo.4)  Re[3]: ライセンス認証について
□投稿者/ 魔界の仮面弁士 (589回)-(2015/12/07(Mon) 01:42:01)
No77997 (澤田 さん) に返信
> 本来はfe80::から始まるIPのみを取得したいのですが、
> 数人に一人は2001:や240f:等違ったものを抽出してしまいます^^;
UnicastAddresses が返すユニキャストアドレスは、
リンクローカルユニキャストアドレスだけではないですよね。

OperationalStatus == Up だけの絞込みだと、
ループバックI/F や Teredo トンネルなども混入してくるでしょうし。

それを返してくる NetworkInterface は何でしたか? PrefixOrigin は?


> 何処を変更すれば良いのかご教授願えますと助かりますm(_ _)m
ネットワーク系には疎いので、教授するのは無理そうです。他の人にお任せ。
引用返信 編集キー/
■78027 / inTopicNo.5)  Re[4]: ライセンス認証について
□投稿者/ 澤田 (4回)-(2015/12/08(Tue) 18:15:25)
魔界の仮面弁士様。
一度諦めて一から全く違う構成で組み直したらなんとか出来ました(^^)
何度もお手間を取らせてすみませんでした^^;



No77998 (魔界の仮面弁士 さん) に返信
> ■No77997 (澤田 さん) に返信
>>本来はfe80::から始まるIPのみを取得したいのですが、
>>数人に一人は2001:や240f:等違ったものを抽出してしまいます^^;
> UnicastAddresses が返すユニキャストアドレスは、
> リンクローカルユニキャストアドレスだけではないですよね。
>
> OperationalStatus == Up だけの絞込みだと、
> ループバックI/F や Teredo トンネルなども混入してくるでしょうし。
>
> それを返してくる NetworkInterface は何でしたか? PrefixOrigin は?
>
>
>>何処を変更すれば良いのかご教授願えますと助かりますm(_ _)m
> ネットワーク系には疎いので、教授するのは無理そうです。他の人にお任せ。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -