紫雨轩 .Net, DNGuard HVM , .Net VMProtect

DNGuard HVM - Advanced .NET Code Protection Technology

常用链接

统计

积分与排名

友情连接

最新评论

让 .Net 程序 脱离 .net framework框架 运行的方法

.Net 框架目前逐步在普及了,仍然有很多人在寻找如何让.NET程序脱离.NET框架的方法。

现成的工具有 Xenocode 的postbuidle或者vas,还有 Salamander .NET Linker .
另外还
有 MaxToCode 作者以前做的 framework linker. 以及一些支持注册表模拟和文件模拟的打包工具molebox,thinstall等.
最后还有某网友(应其要求隐去网名) 兜售的一个实现方法.

Xenocode的是使用了一个虚拟机环境,模拟框架需要的 注册表信息和文件信息.
Xenocode号称的生成native代码功能实际上就是指的这个功能.
我测试了几个程序打包,兼容性似乎不怎么好. 不知道是不是因为机器上已经安装了框架的原因。

Jason做的 framework linker,以前我也使用过, 他的实际上是利用了 Remotesoft的内核文件,然后自己实现了一个loader。好像是使用的早期的内核文件,兼容性也不太好。

Salamander .Net Linker ,Remotesoft的一个产品,没有可以下载的,但是其兼容性似乎很不错。移动的飞信软件就利用了它的核心。

某网友的方法似乎是利用remotesoft的核心和飞信的框架,因为他并没有免费公开方法,从他给出的样例可以看到有remotesoft的核心文件以及飞信的框架程序。

这里要介绍的方法是直接利用飞信的框架来实现脱离 .Net framework运行。
首先下载一个飞信的程序安装。在安装目录中会有 VMDotNet 目录。这个就是.Net框架虚拟环境需要的文件。

直接把整个目录提取出来。

如何利用这个虚拟环境运行 自己的 .Net 程序呢?
很简单,一个命令行搞定。在 VMDotNet 目录里面会找到一个 FetionVM.exe 。这个是虚拟环境的loader。
使用方法: FetionVM.exe pathtoyoureexe
就是直接把你的 .Net 程序 作为命令行参数传递给 FetionVM.exe 就可以在这个虚拟环境中执行你的。net程序了。

最好再自己写一个启动程序,首先检查系统是否安装了。Net框架,如果有直接运行。没有调用虚拟环境运行。

这个启动程序飞信也有,如果不想自己写就直接拿飞信安装目录中的 Feition.exe,但是这样的话 你自己的.Net程序的名字必须叫 FeitionFX.exe 。把它和Feition.exe 放在同一目录下,直接执行 Feition.exe 即可。

另外,如果你对。Net程序使用了加密保护,需要注意一下,目前市面上的大部分。Net加密工具加密后的程序集不能在这个虚拟环境中运行的。

这个东西除了能实现脱离 。net框架运行外,还有另外一个副作用--让。net程序运行在指定版本的 。net 框架中(虽然机器上安装了。net框架,仍然可以让。net程序在这个虚拟框架下运行)。



posted on 2007-08-19 00:57 紫雨轩 .Net 阅读(19463) 评论(93) 编辑 收藏

评论

#1楼 2007-08-19 01:08 volnet(可以叫我大V)      

.......不知道哪天才会去用一下,呵呵  回复 引用 查看   

#2楼[楼主] 2007-08-19 01:12 瑞克      

是啊,现在新的系统基本上都带了dotNet框架了,可能会比较少用得到了。  回复 引用 查看   

#3楼 2007-08-19 01:43 scotoma      

安装完环境就默认的带了框架的了。  回复 引用 查看   

#4楼[楼主] 2007-08-19 01:51 瑞克      

"安装完环境" 是指什么?  回复 引用 查看   

#5楼 2007-08-19 07:27 无语[未注册用户]

有这个必要吗?
不过就是需要的库放到自己需要的地方.

 回复 引用   

#6楼 2007-08-19 08:51 大豆男生      

1.1,2.0 都可以吗?  回复 引用 查看   

#7楼 2007-08-19 08:59 鼠标王[未注册用户]

用处不大。  回复 引用   

#8楼 2007-08-19 09:20 三千.℡      

用飞信的壳,感觉不爽啊.怎么知道其核心解决办法呢.

 回复 引用 查看   

#9楼 2007-08-19 09:22 zyc21st[未注册用户]

Rick在吕昆的网站上说可以实现不再需要使用命令行来调用 飞信的框架了。可以不依赖飞信的框架了。不知rick是否可以公布一下这种方法。
脱离框架作为商业软件来说没有必要,但是作为共享软件还是非常有必要的,值得一研究。
 回复 引用   

#10楼 2007-08-19 09:31 三千.℡      

刚才看了一下,VMDotNet文件夹有24M,所以,感觉对于几百K的小程序/小工具来说,还是没什么意义.
如果程序本身超过20M,其实自己打包.net framework就可以了,反而觉得"安全"

对我来说,之所以想"脱离".net环境,是想把写的一些小软件,小工具给用户使用时,不需要几十M的安装包.

 回复 引用 查看   

#11楼 2007-08-19 09:40 zyc21st[未注册用户]

楼上的,这个VMDotNet文件夹的文件并不是全部需要的,而是根据你自己的程序调用到的dll文件多少决定的。控制在七八M之内是可以的。
另外不是什么人都能忍受.net框架安装的那个速度的。用这种方法打包,可以貌似做成绿色软件,10M之内的打包安装复制还是很迅速的。
 回复 引用   

#12楼 2007-08-19 10:00 Anders.Zhao      

非常好的文章,我从.net 1.1时到现在一直在找这样的程序,可是一直没有找到,现在终于解决了我3年来的问题了:-D  回复 引用 查看   

#13楼 2007-08-19 10:05 5207      

工业化时代,这些技量是技术人员的一种精神寄托。。

无实际意义!
 回复 引用 查看   

#14楼 2007-08-19 10:09 zyc21st[未注册用户]

rick
我有Salamander .NET Linker的试用版程序,用它打包的程序会有弹Message提示,它貌似于把虚拟机直接打到自己的程序中了,小可愚钝,研究不明白。如果你想研究,我可以把这个Salamander .NET Linker试用版程序提供给你
 回复 引用   

#15楼 2007-08-19 10:35 三千.℡      

@zyc21st

10多M我也觉得大,呵呵.

 回复 引用 查看   

#16楼 2007-08-19 10:37 三千.℡      

不过瑞克说的这个方法很好,一定有时间能用上.
 回复 引用 查看   

#17楼 2007-08-19 10:57 zyc21st[未注册用户]

三千.℡
这虽然不是个最好的方法,但是在保证稳定性的基础上比完全安装.net框架不是好的多吗
 回复 引用   

#18楼 2007-08-19 11:11 kiler      

如果是做企业级开发的话,要客户装一个.net framework 也是可以接受的。  回复 引用 查看   

#19楼 2007-08-19 11:35 hk[未注册用户]

真的很无聊  回复 引用   

#20楼[楼主] 2007-08-19 12:05 瑞克      

企业级应用肯定是直接安装框架好了,如果是做小的共享软件,客户又愿意给系统安装框架的话(安装框架一般需要几百MB的空间),这种绿色方式还是不错的。
也就对win98,win2000系统有用了,更高的系统基本上都自带的框架了。
 回复 引用 查看   

#21楼[楼主] 2007-08-19 12:07 瑞克      

针对自己使用的库进行精简后,再打包压缩一下体积能能在6mb左右。  回复 引用 查看   

#22楼[楼主] 2007-08-19 12:08 瑞克      

@大豆男生
支持1.1 和 2.0的程序。
 回复 引用 查看   

#23楼 2007-08-19 13:41 Anders.Zhao      

博主能不能教我们下怎样精简这个VM?我压缩成ZIP后是9.38MB。感觉太大了。  回复 引用 查看   

#24楼 2007-08-19 13:43 taowanghb[未注册用户]

您好!我是新手,想按您说的这个方法试试。
可是,我不知道怎么在FetionVM.exe中配置怎样调用自己需要的DLL,能指点一下么?
谢谢!
 回复 引用   

#25楼[楼主] 2007-08-19 14:19 瑞克      

◎Anders.Zhao
如果是winform程序,基本上没有多少可精简的了。system目录中的文件如果用不着的可以删掉,简单的console程序基本上可以把这个目录整个删除。

@taowanghb
把自己程序集引用的dll 和程序放在一起或者 放到 vmdotnet 里面的system目录中。
 回复 引用 查看   

#26楼 2007-08-19 14:49 taowanghb[未注册用户]

@瑞克
谢谢!
 回复 引用   

#27楼 2007-08-19 15:00 zyc21st[未注册用户]

我在Program.cs中用到了DataTable或DataSet
在用这个方法加载程序时会出错,不知道什么原因
 回复 引用   

#28楼[楼主] 2007-08-19 15:05 瑞克      

需要把 system.data.dll打包进去  回复 引用 查看   

#29楼 2007-08-19 15:10 zyc21st[未注册用户]

system.data.dll已经打包到System目录下 还是不行
只要用到了DataSet或DataTable就出错
 回复 引用   

#30楼 2007-08-19 15:30 zyc21st[未注册用户]

找到原因了
用到DataSet除了要将system.data.dll打包之外
还需要System.Xml.dll
 回复 引用   

#31楼 2007-08-19 16:02 a11s.net      

我想到的不是用在Windows下的loader,而是其他操作系统下的Loader,有此物么?或者已经有人开始搞了?  回复 引用 查看   

#32楼 2007-08-19 16:09 jjx      

.net 3.0
.net 3.5
能不能整出来
 回复 引用 查看   

#33楼 2007-08-19 16:12 曲滨*銘龘鶽      

如果这方面需求很多估计 ms 会出直接打包的方式的

java 就可以 oracle 的安装包就是直接把 java 的运行时文件
copy到temp 目录然后运行的
 回复 引用 查看   

#34楼 2007-08-19 16:16 HardRock      

有些意思,以前寻找过,但没有成功,现在虽然不考虑这个解决方案了,但也许有一天用得到的。  回复 引用 查看   

#35楼[楼主] 2007-08-19 17:01 瑞克      

@a11s.net
其它系统也许可以用mono实现。
@曲滨*銘龘鶽
ms的战略是推广。net框架的普及,应该不会做这样的工作。
@jjx
net 3.0 和 3.5 实际上是 2.0的超集,地层核心还是2.0的那些。
如果你机器上安装了这个框架,可以将 vmdotnet 目录里面的同名文件用你系统中的替换即可。

 回复 引用 查看   

#36楼 2007-08-19 17:17 EvilGod[未注册用户]

ConfigurationManager.AppSettings[key]
用这个方式读出来的AppConfig文件值一直是空 不知什么原因
System.configuration.dll已经打到System包中了
 回复 引用   

#37楼[楼主] 2007-08-19 17:22 瑞克      

可能是config文件的路径取错了,可以用filemon 监视一下,看看读取config时它使用的文件路径是什么。  回复 引用 查看   

#38楼 2007-08-19 18:15 EvilGod[未注册用户]

用这个方法读取的appConfig文件的确是路径不对
没有解决,只好改成用xml的方式读取config文件了
 回复 引用   

#39楼 2007-08-19 20:43 三千.℡      

飞信的安装程序是10M.估计这个VM占了大部分.
 回复 引用 查看   

#40楼 2007-08-19 20:47 三千.℡      

@zyc21st

嗯.你说的这点我赞同.

对于10多M的共享软件,我觉得这个方法挺好,体积也可以接受,比如飞信安装包(Fetion2006_2.3.0180.exe)是10M.

对于比较大的企业级应用,就直接安装framework比较好.

对于几百K或一二M的小工具类软件,这个也是有点大,还是win32程序占优.

 回复 引用 查看   

#41楼 2007-08-20 09:49 亚历山大同志      

感觉意义不大,鸡肋了  回复 引用 查看   

#42楼 2007-08-20 13:11 A.Z[未注册用户]

这个方法其实只是用另外一种形式重发布了.net fw,如果需要编译出原生的可执行文件,第一需要禁止使用.net很多特性,第二需要把引用的类库方法转接到非托管的类库实现。最后要去除运行时的支持。remotesoft好像一直在搞这个。  回复 引用   

#43楼 2007-08-20 13:33 A.Z[未注册用户]

我觉得除了ms自己,是没有哪家公司愿意重写fw的。
现在就看下一代运行时的设计和效能了,上面那堆类库,别指望ms会反省。
 回复 引用   

#44楼[楼主] 2007-08-20 13:46 瑞克      

这个东西只在极少数情况下会需要。
我现在就在使用它的副作用--测试DNGuard HVM在不同框架版本下的HVM伪指令覆盖率,以及HVM伪指令是否能被正确编译执行。
之前需要安装好几个虚拟机来搞这个,现在方便了。

 回复 引用 查看   

#45楼 2007-08-21 18:37 小刚[未注册用户]

这个方法不错,就是不知道稳定不稳定,能用于商业用途吗?  回复 引用   

#46楼 2007-08-22 08:54 tes[未注册用户]

没有必要,需要时候装一下.NET框架好了,才20多M  回复 引用   

#47楼 2007-08-24 14:22 bincom[未注册用户]

我试过了,用飞信的VMDotNet 可以运行,我的过程是重新安装一个win2000 + sp4, 然后将 VMDotNet 复制到 d:\, 再复制我的程序到VMDotNet目录中, 再用运行 FetionVM.exe MyApp.exe 就可以了,注意如果用到数据库需要安装 mdac_typ.exe (v2.7).
 回复 引用   

#48楼 2007-08-25 14:26 Wisdom-zh      

关键是 loader 这块比较有意思
国外有个 ie7 loader, 就是一个 bat, 倡导这种方式
 回复 引用 查看   

#49楼 2007-08-25 14:32 没剑      

我是用VB.net的,发现飞信的这个VM只能让C#的程序运行。。。
有谁可以修改成让VB.net也正常运行的????
 回复 引用 查看   

#50楼 2007-08-25 14:34 随心所欲      

Good!  回复 引用 查看   

#51楼[楼主] 2007-08-25 15:00 瑞克      

@没剑
因为这个框架中没有包含 VB.Net 的运行库,你需要自己提取vb.net的运行库放到虚拟框架的对应目录中才行。
 回复 引用 查看   

#52楼 2007-08-26 11:45 handandaily[未注册用户]

5  回复 引用   

#53楼 2007-08-28 21:34 没剑      

@瑞克
呵呵,提取成功了,谢谢
 回复 引用 查看   

#54楼 2007-09-01 00:23 flanker[未注册用户]

@bincom以及各位

我自己也试了一下,我的是C#写的 WinForm程序,有用到SQLServer数据库
用它默认情况运行出错,VMDotNet\v2.0.50727里有个log就写了一行程序出错
然后我加了我自己需要的dll进去,运行出错,log记录:
运行程序 ..\..\FetionFX.exe 出现错误!The type initializer for 'System.Management.ManagementPath' threw an exception.

我看飞信dll都是v2.0.50727.42,我添加自己的dll是v2.0.50727.832,有些文件都差几KB大小呢

不知道怎么解决的?还有bincom说的mdac_typ.exe 是什么啊?

 回复 引用   

#55楼 2007-09-01 02:27 flanker[未注册用户]

对上面问题的更新说明:

现在我也找到 v2.0.50727.42的dotnetFX了

如果我不放入 System.Management.dll
那么出错 log为:运行程序 ..\..\FetionFX.exe 出现错误!

如果我放入 System.Management.dll
那么出错 log为:运行程序 ..\..\FetionFX.exe 出现错误!The type initializer for 'System.Management.ManagementPath' threw an exception.

但我自己的C#代码里面好像并没有依赖System.Management啊,这个为什么一加就错,我也不知道System.Management是干什么的。。。

请教rick和各位高手帮忙看看啊!谢谢了!



 回复 引用   

#56楼 2007-09-01 03:16 flanker[未注册用户]



再次请教rick和各位大哥:

刚才又检查了一遍,代码中确实有处地方用到了System.Management,但是为什么添加System.Management就会出现exception呢?

我修改了程序,去除了System.Management,现在运行,每次都是:运行程序 ..\..\FetionFX.exe 出现错误!不知道是为什么?我最后几乎把v2.0.50727文件夹里的所有dll都复制进去了还是不行。

我自己写个小的winform程序,可以成功运行的啊。而且只使用了飞信自带的那几个dll,我就不明白,我自己那个程序为什么就没有成功运行过。。。

问一问,还望大家指教

 回复 引用   

#57楼 2007-09-01 08:23 EvilGod[未注册用户]

将System.Management.dll添加到v2.0.50727文件夹中
 回复 引用   

#58楼 2007-09-01 09:54 flanker[未注册用户]

@EvilGod

大哥你有没有仔细看我的问题啊 :)

如果我放入 System.Management.dll
那么出错 log为:运行程序 ..\..\FetionFX.exe 出现错误!The type initializer for 'System.Management.ManagementPath' threw an exception.

添加System.Management就会出现exception
 回复 引用   

#59楼[楼主] 2007-09-01 13:26 瑞克      

可以和自己的程序放在同一个目录中,
另外 不仅仅是你的程序直接引用的dll,间接引用的dll也需要添加。
如果还有问题可以把程序发给我,我可以帮你看看是缺少什么文件。
 回复 引用 查看   

#60楼 2007-09-02 09:30 EvilGod[未注册用户]

这个错误肯定是还有未打包的dll引起的,
上面我遇到过这样一个问题,同样的异常错误
我的程序中用到了DataTable
但是光把System.data.dll打包之后就出错
后来发现还需要System.xml.dll
 回复 引用   

#61楼 2007-09-03 08:44 flanker[未注册用户]

我也觉得是缺少有些dll

但是我几乎把.NET中v2.0.50727所有的dll都复制过去了,也不行
to rick:谢谢啊,这两天在外面,没有程序,过两天发过去请你看看。

还有个问题:
其实我自己用vs生成个最简单的WinForm,用飞信的都可以运行,但是我用Reflector来看它,也有好多dll没有在飞信中阿,这样子也没有发现什么问题啊。到底哪些dll需要,哪些不需要,这些dll有差别的吗?
 回复 引用   

#62楼 2007-09-06 10:42 jisen

哪位给我一个VMDotNet包,谢谢!jiys@co-sail-soft.com  回复 引用   

#63楼 2007-09-06 13:24 jisen

我的windows程序是1.1下写的,放到vmdotnet中运行FetionVM.exe App.exe报错FileLoadException错误。为什么?难道是版本问题?只能用2.0或以上....?  回复 引用   

#64楼[楼主] 2007-09-06 14:08 瑞克      

@jisen
1.1的程序集可以在 2.0的框架中运行。
你需要提取自己的程序所使用的 dll 文件,放到system 目录中。
 回复 引用 查看   

#65楼 2007-09-11 20:25 老7[未注册用户]

@bincom
按照bincom说的,我也安装了mdac_typ.exe (v2.7), 可是一旦用的数据库,只要代码中有一句:SqlCommand cmd = new SqlCommand(); 程序就会弹出异常:System.IO.FileLoadException:
File name: 'System.Data, Version=2.0.0.0,。。。。。。

FileLoadException好象是说找到了dll文件加载不了,这是怎么回事啊??
其他的应用都正常,就是这个数据库的问题,把我快搞死了,求大哥们帮帮忙啊!!
 回复 引用   

#66楼[楼主] 2007-09-11 20:51 瑞克      

@老7
需要 system.data.dll 以及被 system.data.dll 引用的其它程序集文件。
 回复 引用 查看   

#67楼 2007-09-11 20:55 老7[未注册用户]

瑞克老大,我甚至试过把所有的.net dll 文件都拷贝到system目录里面去了,还是报一样的错啊。。。
这个问题对我很重要,您要是能帮我解决,将不甚感激!!!
可以加我qq吗? qq:4885889
 回复 引用   

#68楼 2007-09-11 21:06 老7[未注册用户]

其实我的代码里面就这一句:SqlCommand cmd = new SqlCommand();
system.data.dll 我早就加了,不知道还要加些什么dll才行;我的测试机器除了windows xp,什么都没装。
 回复 引用   

#69楼[楼主] 2007-09-11 21:17 瑞克      

@老7
用reflector 看看 system.data.dll引用了哪些dll。
另外这些dll间接引用的可能也需要,.Net 的dll有些是在GAC 中的,不光是 v2.0.50727 这个目录中。
建议找 remotesoft索取一个 linker的试用版,那样可以自动提取需要的dll。
 回复 引用 查看   

#70楼 2007-09-11 21:18 老7[未注册用户]

刚才还发现,如果是因为没有dll,程序将返回FileNotFoundException,而现在返回的是:FileLoadException;说明文件找到了,但是打不开。。。。  回复 引用   

#71楼 2007-09-11 21:42 老7[未注册用户]

多谢瑞克指明方向,我慢慢研究下。。。
瑞克的手一挥,挥到哪里我们去哪里。。。。
 回复 引用   

#72楼 2007-10-30 15:06 hanjie[未注册用户]

版主,如果想利用这个虚拟框架运行我的程序,FetionVM.exe pathtoyoureexe这句话应该写在什么地方啊  回复 引用   

#73楼 2007-11-07 14:48 11112132[未注册用户]

很多情况下不能运行哦,比如序列化。。在反序列化时会报:
ee the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Runtime.Serialization.SerializationException: Unable to find assembly 'DTUBridge, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
at DTUBridge.Form1.button2_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 回复 引用   

#74楼 2007-11-19 14:15 Ian[未注册用户]

我也遇到序列化的问题了。。生成cs文件对应的dll的时候出错。。。不过这个倒是我自己的xml序列化操作出的错:
unable to generate a temporary class: cound not write to output file "Documents\localsettings\temp\xxx.dll"

但是查看了一下filemon似乎这个dll被创建并删除过了。不知道怎么回事。现在data.dll, xml.dll都有。。
 回复 引用   

#75楼[楼主] 2007-11-19 14:51 瑞克      

可能是杀毒软件或者防火墙的问题,试试暂时关闭。  回复 引用 查看   

#76楼 2007-11-22 13:42 niceboy      

很不错的文章,收藏了  回复 引用 查看   

#77楼 2008-04-15 00:39 Jeron[未注册用户]

我的程序可以运行,可是一联数据库就不行了。

System.InvalidOperationException: Internal connection fatal error.
 回复 引用   

#78楼[楼主] 2008-04-19 16:38 瑞克      

这个问题我也不清楚,没有遇到过。  回复 引用 查看   

#79楼 2008-05-08 01:10 suhuoqiang[未注册用户]

为什么用到datatable就出错,已经将system.data.dll和system.xml.dll放在
VMdotnet/v2.0.50727/sytem里面了呀.
??为什么呢?各位大哥求救!!!!!!!!!!

QQ:86428619
email:suhuoqiang@163.com
 回复 引用   

#80楼 2008-06-21 11:19 曹[未注册用户]

我在其中用到了 Web Service 结果报错 求解决

Object reference not set to an instance of an object.


并且我已经把相关需要的组件复制到:
VMDotNet\v2.0.50727\System\目录下
System.ServiceProcess.dll
System.Web.Services.dll

等 求解决办法 加我也可以 21320865 QQ

各位谁有解决办法也可以加我一起讨论
 回复 引用   

#81楼 2008-07-28 18:10 willen[未注册用户]

System.Management.ManagementPath' threw an exception的问题有人解决了吗...好急啊.求解决方法....也可以加我的QQ:191331414..
 回复 引用   

#82楼 2008-07-30 16:06 willen[未注册用户]

飞信的虚拟环境在Server2003下没有问题...可一拿到XP下就报System.Management.ManagementPath' 问题  回复 引用   

#83楼 2008-08-03 19:16 犇牛牛[未注册用户]

看来都遇到这个问题了 代码中要用datatable,拷了system.data.dll到system目录,但是报fileloadexception错误 感觉和版本有关又和版本无关 我把其他几个dll换成2.0.50727.1433 还是可以运行 只要用到system.data.dll的类就报错了。。
有没有高手知道的啊
 回复 引用   

#84楼 2008-09-23 17:32 wf[未注册用户]

我的使用心得:
1. 需要release下编译.
2.运行路径要对,最好把文件夹的东西都考出来发到运行目录下就可以了.
3.打包工具 推荐使用Inno setup 这个,.net工具打包不好用.

现在遇见的问题:
有的A连接大不开, 用process.start 方式的 ,不过有的机器好用,不知道这么回事?????
 回复 引用   

#85楼 2008-09-23 17:32 wf[未注册用户]

我的使用心得:
1. 需要release下编译.
2.运行路径要对,最好把文件夹的东西都考出来发到运行目录下就可以了.
3.打包工具 推荐使用Inno setup 这个,.net工具打包不好用.

现在遇见的问题:
有的A连接大不开, 用process.start 方式的 ,不过有的机器好用,不知道这么回事?????
 回复 引用   

#86楼 2008-12-24 15:20 gavinchen[未注册用户]

根据楼主的方法报出
The type initializer for 'System.Management.ManagementPath' threw an exception.

把dotnet2.0下的'System.Management.dll copy下去.一样出错.
我的cs文件引用了
using System;
using System.Security.Cryptography;
using System.Management;
using System.IO;
using System.Data;
using System.Text;
using System.Windows.Forms;

 回复 引用   

#87楼 2008-12-24 16:22 lovedotnet[未注册用户]

楼主:
如果让下面的代码在fetion 虚拟框架下运行. 而不报错.

string strMac = "";

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (mo["IPEnabled"].ToString() == "True")
{
strMac += mo["MacAddress"].ToString() + ",";
}
}

mac = strMac.TrimEnd(',');
 回复 引用   

#88楼 2008-12-24 18:35 爱.辉.舞      

关于
The type initializer for 'System.Management.ManagementPath' threw an exception.
这个错.可以通过以下方法解决.
获取硬件信息可以采用api的方式来获取.
 回复 引用 查看   

#89楼 2008-12-25 13:56 qq84937231[未注册用户]

学习了  回复 引用   

#90楼 2010-07-27 14:17 qianlifeng      

@瑞克
还是有大多数的没装吧!
 回复 引用 查看   

#91楼 2010-09-14 17:13 东圳      

学习了。。。。  回复 引用 查看