留给C# 【高手】的问题

vbing04110 2009-09-10 07:20:03
C#写的应用程序 必须要在装有.NET Framework 2.0 的客户机上才能运行吗?
我把在没有.NET Framework 2.0的计算机上为什么不能正常运行呢? 有什么办法可以解决呢?
请各路高手赐教!静候佳音!
...全文
91 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovexilove 2009-09-10
  • 打赏
  • 举报
回复
无解
微创社(MCC) 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyi8808 的回复:]
必须要有运行库。如果不想安装.NET Framework 2.0,可以考虑参考移动飞信的做法。
[/Quote]

飞信什么做法?
反编译成功的,整个飞信代码。
DSIOF3KIDSKTR 2009-09-10
  • 打赏
  • 举报
回复
本来看了这帖子都有点不爽,还留给“高手”呢,在这个问题上所有人的手都和你一样高……
龙宜坡 2009-09-10
  • 打赏
  • 举报
回复
装.NET Framework吧,没的说
myouuu 2009-09-10
  • 打赏
  • 举报
回复

/*
.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程序在这个虚拟框架下运行)。
/*


引自博客园!!
hard9999 2009-09-10
  • 打赏
  • 举报
回复
除非有第三方运行环境,否则无法运行。Framework类似于宿主,你的代码需要在这个环境下运行,脱离了环境就没有意义了。就像鱼在陆地上能活吗?可以,弄个鱼缸。
wuyi8808 2009-09-10
  • 打赏
  • 举报
回复
必须要有运行库。如果不想安装.NET Framework 2.0,可以考虑参考移动飞信的做法。
早就知道C#是.net平台最好的编程语言,以简洁高效著称,但是一直没有去尝试,今天终于打开VisualStudio来一睹C#的风采,不试不知道,原来C#这么好用! 原来总以为C#有些难学,但是上手才发现,原来一切是如此简单,如果你之前非常熟悉VC和Java的编程方法,那么,C#入门不用半个小时。 熟悉VC使你可以更快的适应Visual C#的开发环境,毕竟都是微软自家的东西,而熟悉Java你可以对C#语言快速上手,因为C#和Java是非常相似的!我很庆幸自己之前已经比较熟练的使用VC和Java了,整个C#入门用了不到半个小时,而从初次接触C#到开发这个QQ自动登录器也只用了短短的几个小时,下面,我就给大家讲讲如何用C#开发一个QQ自动登录器,让大家真正体会到C#的强大魅力! 现在拥有QQ的人已经很多了,而且不少人同时拥有几个账号,遗憾的是QQ只能设置一个号码自动登录,如果想同时登录几个账号那么必须一个一个手动输入,因此,网上也出现了不少QQ自动登录器,这究竟是怎么实现的呢?其实原理非常简单。 QQ是支持命令行登录的,也就是说QQ的exe程序支持参数,下面举一个参数登录的例子: e:\qq\qq.exe /START QQUIN:00000000 PWDHASH:4QrcORm6Wau+VuBX9g+IPg== /STAT:41 比如有上面这个参数,前面的e:\qq\qq.exe是QQ的程序路径,/START QQUIN:是保留字段,后面紧跟的就是需要登录的QQ号码,PWDHASH:是保留字段,后面紧跟的是该QQ号码的密码,不过这个密码是加密的,我们等下再说,/STAT:41是表示登录状态,其中41表示正常登录,而40表示隐身,目前一直到QQ2009好像只支持这两个状态,不支持其他诸如忙碌,静音,离开等状态,有了这个参数,我们实现自动登录就方便多了! 这个参数里面其他都好说,唯独这个加密的密码我们不好处理,因为我们必须把密码转换为加密方式,其实,QQ密码的加密方式也是非常简单的,先用MD5的HASH进行一次加密,然后把结果再用一次Base64加密即可得到这个加密字符串,有了这个信息,我们剩下的就好办多了! 很幸运的是用C#处理这个加密非常简单,有个Convert.ToBase64String(byte[])可以直接进行base64加密,而System.Security.Cryptography这个系统类里有md5.ComputeHash这个方法直接可以进行Hash加密,所以,密码的加密也就变得很简单了,下面对这部分代码进行一个详细的说明: 首先引用系统类 using System.Security.Cryptography; 然后在任意一个按钮事件中写下如下代码: MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] pass=Encoding.Default.GetBytes("要加密的QQ密码"); string command = " /START QQUIN:" + "00000000"+ " PWDHASH:" + Convert.ToBase64String(md5.ComputeHash(pass)) + " /STAT:" + "41"; 这样短短的3行代码就构造得到了QQ的登录参数command变量,剩下的只要用System.Diagnostics.Process.Start这个方法去运行这个带参数的QQ.exe就可以了! 我自己写了这个QQ自动登录的程序,比较简单,当然程序中我没用Convert.ToBase64String这个方法去用Base64加密,而是自己写了Base64的加密方法,主要是为了熟悉一下C#类的使用,另外,程序中还用到了一些基本控件,比如timer,openfiledialog,listview等,适合初学者掌握一些基本控件的用法! 这里我把源码一并给出,这也是我第一个C#上手程序,虽然只用了短短几个小时,但是我已经可以体会到C#强大的功能,今后还会继续深入研究! ps:程序基本完成了自动登录的全过程,但是没有完善保存列表的功能,这个也是比较简单的,下次完善吧,就算留给你们一个课后作业,高手不要见笑,毕竟你们看来程序还是非常简单的,至少我自己写完也是有这个感觉!如果你们谁完善了别忘了发给小焱一份哦! 程序使用VisualStudio2005 编译完成,如果想单独运行请确保已经安装.net framework 2.0 框架!

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧