Fortran Coder

标题: 读取MAC地址,winXP可以用,win7运行不了,求教 [打印本页]

作者: letsunsing    时间: 2014-7-6 10:42
标题: 读取MAC地址,winXP可以用,win7运行不了,求教
读取MAC地址,winXP可以用,但是到了win7运行不了,求教

源程序如下:
[Fortran] 纯文本查看 复制代码
c      subroutine machostnm
       USE MSFLIB
       LOGICAL(4)  result
         character  sult(17)
c        write(*,*) '     '
         write(*,'(1x,a16\)')  ' 正在验证用户... '
result = SYSTEMQQ('ipconfig /all >ipconfig.txt')
       result = SYSTEMQQ('find  "Physical Address" ipconfig.txt >
&massage.txt')
       result = SYSTEMQQ('for /f "skip=1 tokens=2 delims=:" %a in
      & (massage.txt) do @echo %a>a.txt')
       result = SYSTEMQQ('for /f "tokens=* delims=- " %a in (a.txt)
      & do @echo %a>mac地址.txt')
       result = SYSTEMQQ('find  "Host Name" ipconfig.txt >
      &massage.txt')
       result = SYSTEMQQ('for /f "skip=1 tokens=2 delims=:" %a in
      & (massage.txt) do @echo %a>a.txt')
       result = SYSTEMQQ('for /f "tokens=* delims=- " %a in (a.txt)
      & do @echo %a>host用户名.txt')
       result = SYSTEMQQ('del ipconfig.txt')
       result = SYSTEMQQ('del massage.txt')
       result = SYSTEMQQ('del a.txt')
       ! 物理网卡地址在  mac地址.txt  文件中
open(12,file='mac地址.txt')
         read(12,'(17a1)')  (sult(i),i=1,17)
         close(12,status='delete')
         write(111,*) sult
c         write(*,'(A28,17a1\)')  'mac地址:',(sult(i),i=1,17)
         open(12,file='host用户名.txt')
         read(12,'(17a1)',err=123)  (sult(i),i=1,17)
         close(12,status='delete')
123        write(*,'(1x,A12,17a1\)')  ' 用户名:',(sult(i),i=1,17)
         return
       end

win xp下面用得好好的,到了win7就用不了。

这是一个程序加密的子程序,把授权的电脑MAC地址写入源程序,电脑MAC地址跟程序一致才能运行。

现在系统都逐步升级到win7 win8,导致原有程序无法运行或无法加密。

求教论坛高手。


作者: 楚香饭    时间: 2014-7-6 16:56
win7有更高的权限,所以你的代码可能无法得到。

说实话,即便你的代码可以跑。也很容易破解。只要写一个假的mac地址到临时文件,设置为只读即可。

另外,mac地址也可以更改,很容易的。

所以,我劝你另谋蹊径。
作者: letsunsing    时间: 2014-7-6 20:25
chuxf 发表于 2014-7-6 16:56
win7有更高的权限,所以你的代码可能无法得到。

说实话,即便你的代码可以跑。也很容易破解。只要写一个假 ...

请教大师: WIN 7系统下面,fortran如何读取系统MAC地址?

作者: 楚香饭    时间: 2014-7-6 21:46
语法里没有这些内容的规定。你得自己想办法。

就像我上面说的那样,MAC地址很容易修改,所以根本不保险。我建议你读取硬盘序列号或CPUID更合适。
作者: fcode    时间: 2014-7-6 22:49
你试试把
find  "Physical Address" ipconfig.txt >
修改为
find  "物理地址" ipconfig.txt >


find  "Host Name" ipconfig.txt >
修改为
find  "主机名" ipconfig.txt >

反正我这里 ipconfig 的输出是中文的。改成搜索中文之后,就可以得到结果了。
      
作者: 珊瑚虫    时间: 2014-7-9 19:46
据我所知iwin7 下面是中文的 你用中文的试试




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2