VideoShot.exe停止工作的解决办法

  正专心查找资料,突然接连冒出两个“VideoShot.exe停止工作”的错误提示,上网搜索了下,这个是迅雷的一个插件,有人说是视频下载完成后就会出这个错。这才想起来刚才应GF之请,在下载几集电视剧以备五一旅途消磨时间用,查看了下下载进度,正好有两集下载完成了。
  既然是视频下载完成后出这个错误提示,这插件应该是个视频预览插件。再看下迅雷,发现迅雷在下载完成后自动切换到下载完成列表,右边有个视频信息一栏,貌似就是预览视频的,但是由于出错了,没信息。那我去禁用或者删除这个插件好了,反正我又不想用迅雷这个预览功能。打开迅雷7,找了设置中心等各个角落也没找到插件管理的地方。
  该死的迅雷,好吧,我自己去你老巢把这个插件给揪出来。在迅雷安装目录搜索了下VideoShot.exe,果真在addinsVideoAddin目录中找到了它。直接删除的话,应该会有什么问题的,那我搜索下配置文件,看看能不能找到相关的信息,搜索包含字符串“VideoShot.exe”的文件,只找到一个unins000.dat,不应该是它,再搜索目录名:VideoAddin,这下找到了好几个文件。其中两个文件比较可疑,一个是Thunderaddins目录下的addins_cache.xml,一个是skindefault目录下的skin.xml。
  用记事本等文本编辑器打开addins_cache.xml,搜索字符串“VideoAddin”,找到了“<addin name='VideoAddin' />”,删除掉,保存文件。
  再打开skin.xml,同样搜索字符串“VideoAddin”,先是找到一行这样的字符串:
  <texture id="VideoAddin::texture.videoaddin.bgpanel.bg" />
为了方便调试与恢复,我不删除,先注释掉,改为:
  <!–<texture id="VideoAddin::texture.videoaddin.bgpanel.bg" />–>
  继续搜索字符串“VideoAddin”,找到几行这样的字符串:
[quote]
视频信息面板
<texture id="VideoAddin::texture.videoaddin.snap.bottompanel" />
<texture id="VideoAddin::texture.videoaddin.line" />
<texture id="VideoAddin::texture.videoaddin.bottompanel" />
<texture id="VideoAddin::texture.viewsnapbtn.play.normal" />
<texture id="VideoAddin::texture.viewsnapbtn.play.down" />
<texture id="VideoAddin::texture.viewsnapbtn.play.hover" />
<texture id="VideoAddin::texture.taskvideoinfo.reftabsbkg" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.normal" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.down" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.hover" />
<bitmap id="VideoAddin::bitmap.taskvideoinfo.ExtendTabs.Splitter" />
<texture id="VideoAddin::VideoInfo.NineInOne.bkg" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.disable" />
<texture id="VideoAddin::texture.bkg.addBtn" />
<texture id="VideoAddin::texture.videoInfo.AddNormal" />
<texture id="VideoAddin::texture.videoInfo.AddHover" />
<texture id="VideoAddin::texture.videoInfo.AddDown" />
<texture id="VideoAddin.TaskList.DapBtn.FluencyNormal" />
<texture id="VideoAddin.TaskList.DapBtn.FluencyHover" />
<texture id="VideoAddin.TaskList.DapBtn.FluencyDown" />
[/quote]
  一看就知道是视频信息那栏一配置信息了,也给注释掉,改成:[quote]<!–视频信息面板
<texture id="VideoAddin::texture.videoaddin.snap.bottompanel" />
<texture id="VideoAddin::texture.videoaddin.line" />
<texture id="VideoAddin::texture.videoaddin.bottompanel" />
<texture id="VideoAddin::texture.viewsnapbtn.play.normal" />
<texture id="VideoAddin::texture.viewsnapbtn.play.down" />
<texture id="VideoAddin::texture.viewsnapbtn.play.hover" />
<texture id="VideoAddin::texture.taskvideoinfo.reftabsbkg" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.normal" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.down" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.hover" />
<bitmap id="VideoAddin::bitmap.taskvideoinfo.ExtendTabs.Splitter" />
<texture id="VideoAddin::VideoInfo.NineInOne.bkg" />
<texture id="VideoAddin::texture.viewsnapRightbtn.play.disable" />
<texture id="VideoAddin::texture.bkg.addBtn" />
<texture id="VideoAddin::texture.videoInfo.AddNormal" />
<texture id="VideoAddin::texture.videoInfo.AddHover" />
<texture id="VideoAddin::texture.videoInfo.AddDown" />
<texture id="VideoAddin.TaskList.DapBtn.FluencyNormal" />
<texture id="VideoAddin.TaskList.DapBtn.FluencyHover" />
<texture id="VideoAddin.TaskList.DapBtn.FluencyDown" />–>
[/quote]
  保存文件,退出并重新打开迅雷,再去下载一个视频,下载完成后再也没有错误提示了。

Jinitiator控件IE崩溃及Jinitiator界面汉字方框的解决办法

  前几天拿到的一套网络销售系统原来还有个类似ERP的管理后台,折腾了半天才架设起来并找到入口,类似http://IP:7778/forms/frmservlet?config=webutil&form=main,初步了解了下,好像是用Oracle Form builder开发的。在原来就安装好Jinitiator控件的一台服务器上(Windwos Server 2003操作系统)用IE打开这个网址,然后会弹出个类似JVM的界面,但界面上的汉字都是乱码的,就是显示成黑色线的方框。
  网上搜索了下,说是将Jinitiator安装目录C:Program FilesOracleJInitiator 1.3.1.22下的lib文件夹里的font.properties.zh.5.1复制一份,重命名为font.properties.zh.5.2即可解决,试了下,果然成功了。
  为了方便查看系统,同事就在他的办公电脑(Windows 7)上也浏览器那个网址,并按提示安装了Jinitiator控件,但是安装完成后用IE浏览器这个网址直接就崩溃了。我也在自己的笔记本上(Windows Server 2008)安装此控件,用IE打开也直接崩溃,用Maxthon打开,提示:
Maxthon 阻止了一个错误.
Fault address: 6D4AC228 03:00014228 C:PROGRA~1OracleJINITI~1.22inhotspotjvm.dll
然后就崩溃了。
同事说难道Win7之类的系统与这个控件不兼容?找了台装有Windows XP的电脑试了下,依旧崩溃。
  网上查了下资料,看到有人说Jinitiator和JVM其实是差不多的东西,我就想尝试下安装个JDK看看能不能解决。先是把Jinitiator卸载了,然后安装JDK,试了下还是失败,再把Jinitiator装上去,依旧不成功。
  回顾了下整个过程,我又注意到Maxthon下的错误提示,是与jvm.dll有关的,那把JDK下的jvm.dll复制过来替换了,是否能行呢?搜索下JDK安装目录,找到三个jvm.dll文件,分别在“Javajre6inclient”、“Javajdk1.6.0_10jreinclient”和“Javajdk1.6.0_10jreinserver”目录下,前两个文件大小是一样的,我猜是同样的文件,还有一个文件稍大,用哪个好呢?既然是在运行客户端,那就用client目录下的吧,替换后,再次打开那个网址,再也不崩溃了。
  一波刚平一波又起,IE是不崩溃了,打开的界面同样是乱码的,并且用刚刚那个办法无法解决。再次上网搜索,很快找到解决办法:
在Jinitiator安装目录的lib文件夹中找到font.properties.zh,把里面的
filename.u5b8bu4f53=SIMSUN.TTF
改为
filename.u5b8bu4f53=SIMSUN.TTC
即可
  折腾了半天,解决了两个问题,现将解决办法记录在此,供遇到相同问题的朋友参考。

Oracle数据库出错ORA-01033的解决办法之一

  这几天拿到一套网络销售系统(连电脑一起搬过来),要架设起来看看。开机后发现是Windows Server 2003的操作系统,IIS下的ASP站点,用的是Oracle数据库。打开站点发现报错:ORA-01033:oracle initializationg or shutdown in progress ,是数据库连接问题。通过PL/SQL Developer连接Oracle时也报ORA-01033:oracle initializationg or shutdown in progress 错误提示。经过一番折腾解决了问题。解决思路为:用命令行模式启动数据库服务,看看初始化与装载数据库时具体提示哪个地方出错。过程如下:

1、进入CMD,执行set orACLE_SID=db(要确保连接到正确的SID)
2、执行sqlplus “/as sysdba”
  SQL>shutdown immediate  (先停止服务)
  SQL>startup          (启动服务)
数据库装载完毕,但是报错:
orA-16038:日志 3 序列号 290 无法归档
orA-19504:无法创建文件””
orA-00312:联机日志线程1:'F:ORACLEORADATADBREDO03.LOG'

3、联想到之前系统提示F盘空间不足,虽然我之前已经清理了一些,但是我看了下才几十M的可用空间了,难道是这个原因?再次清理了下F盘,然后再次停止服务后启动服务,此次正常。
4、进入PL/SQL Developer检查,没有再提示错误。
  至此,问题解决,打开站点访问也没有报错了。

PHP利用SMTP发送邮件(Mail)的类与函数

  很多情况下,服务器都没有建邮件服务器,因为PHP自带的Mail函数基本上起不了什么作用。废话不多说,分享一个用SMTP可以发信的类和函数。
SMTP类代码:
[code]class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;

/* Private Variables */
var $sock;

/* Constractor */
function smtp($relay_host = “”, $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; //is used in fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this->pass = $pass;
#
$this->host_name = “localhost”; //is used in HELO command
$this->log_file = “”;

$this->sock = FALSE;
}

/* Main Function */
function sendmail($to, $from, $subject = “”, $body = “”, $mailtype, $cc = “”, $bcc = “”, $additional_headers = “”)
{
$mail_from = $this->get_address($this->strip_comment($from));
$body = ereg_replace(“(^|(
))(\.)”, “\1.\3”, $body);
$header .= “MIME-Version:1.0
“;
if($mailtype==”HTML”){
$header .= “Content-Type:text/html
“;
}
$header .= “To: “.$to.”
“;
if ($cc != “”) {
$header .= “Cc: “.$cc.”
“;
}
$header .= “From: $from<“.$from.”>;
“;
$header .= “Subject: “.$subject.”
“;
$header .= $additional_headers;
$header .= “Date: “.date(“r”).”
“;
$header .= “X-Mailer:By Redhat (PHP/”.phpversion().”)
“;
list($msec, $sec) = explode(” “, microtime());
$header .= “Message-ID: <“.date(“YmdHis”, $sec).”.”.($msec*1000000).”.”.$mail_from.”>;
“;
$TO = explode(“,”, $this->strip_comment($to));

if ($cc != “”) {
$TO = array_merge($TO, explode(“,”, $this->strip_comment($cc)));
}

if ($bcc != “”) {
$TO = array_merge($TO, explode(“,”, $this->strip_comment($bcc)));
}

$sent = TRUE;
foreach ($TO as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this->smtp_sockopen($rcpt_to)) {
$this->log_write(“Error: Cannot send email to “.$rcpt_to.”
“);
$sent = FALSE;
continue;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
$this->log_write(“E-mail has been sent to <“.$rcpt_to.”>;
“);
} else {
$this->log_write(“Error: Cannot send email to <“.$rcpt_to.”>;
“);
$sent = FALSE;
}
fclose($this->sock);
$this->log_write(“Disconnected from remote host
“);
}
return $sent;
}

/* Private Functions */

function smtp_send($helo, $from, $to, $header, $body = “”)
{
if (!$this->smtp_putcmd(“HELO”, $helo)) {
return $this->smtp_error(“sending HELO command”);
}
#auth
if($this->auth){
if (!$this->smtp_putcmd(“AUTH LOGIN”, base64_encode($this->user))) {
return $this->smtp_error(“sending HELO command”);
}

if (!$this->smtp_putcmd(“”, base64_encode($this->pass))) {
return $this->smtp_error(“sending HELO command”);
}
}
#
if (!$this->smtp_putcmd(“MAIL”, “FROM:<“.$from.”>;”)) {
return $this->smtp_error(“sending MAIL FROM command”);
}

if (!$this->smtp_putcmd(“RCPT”, “TO:<“.$to.”>;”)) {
return $this->smtp_error(“sending RCPT TO command”);
}

if (!$this->smtp_putcmd(“DATA”)) {
return $this->smtp_error(“sending DATA command”);
}

if (!$this->smtp_message($header, $body)) {
return $this->smtp_error(“sending message”);
}

if (!$this->smtp_eom()) {
return $this->smtp_error(“sending <CR>;<LF>;.<CR>;<LF>; [EOM]”);
}

if (!$this->smtp_putcmd(“QUIT”)) {
return $this->smtp_error(“sending QUIT command”);
}

return TRUE;
}

function smtp_sockopen($address)
{
if ($this->relay_host == “”) {
return $this->smtp_sockopen_mx($address);
} else {
return $this->smtp_sockopen_relay();
}
}

function smtp_sockopen_relay()
{
$this->log_write(“Trying to “.$this->relay_host.”:”.$this->smtp_port.”
“);
$this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write(“Error: Cannot connenct to relay host “.$this->relay_host.”
“);
$this->log_write(“Error: “.$errstr.” (“.$errno.”)
“);
return FALSE;
}
$this->log_write(“Connected to relay host “.$this->relay_host.”
“);
return TRUE;
}

function smtp_sockopen_mx($address)
{
$domain = ereg_replace(“^.+@([^@]+)$”, “\1”, $address);
if (!@getmxrr($domain, $MXHOSTS)) {
$this->log_write(“Error: Cannot resolve MX “”.$domain.””
“);
return FALSE;
}
foreach ($MXHOSTS as $host) {
$this->log_write(“Trying to “.$host.”:”.$this->smtp_port.”
“);
$this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out);
if (!($this->sock && $this->smtp_ok())) {
$this->log_write(“Warning: Cannot connect to mx host “.$host.”
“);
$this->log_write(“Error: “.$errstr.” (“.$errno.”)
“);
continue;
}
$this->log_write(“Connected to mx host “.$host.”
“);
return TRUE;
}
$this->log_write(“Error: Cannot connect to any mx hosts (“.implode(“, “, $MXHOSTS).”)
“);
return FALSE;
}

function smtp_message($header, $body)
{
fputs($this->sock, $header.”
“.$body);
$this->smtp_debug(“>; “.str_replace(”
“, ”
“.”>; “, $header.”
>; “.$body.”
>; “));

return TRUE;
}

function smtp_eom()
{
fputs($this->sock, ”
.
“);
$this->smtp_debug(“. [EOM]
“);

return $this->smtp_ok();
}

function smtp_ok()
{
$response = str_replace(”
“, “”, fgets($this->sock, 512));
$this->smtp_debug($response.”
“);

if (!ereg(“^[23]”, $response)) {
fputs($this->sock, “QUIT
“);
fgets($this->sock, 512);
$this->log_write(“Error: Remote host returned “”.$response.””
“);
return FALSE;
}
return TRUE;
}

function smtp_putcmd($cmd, $arg = “”)
{
if ($arg != “”) {
if($cmd==””) $cmd = $arg;
else $cmd = $cmd.” “.$arg;
}

fputs($this->sock, $cmd.”
“);
$this->smtp_debug(“>; “.$cmd.”
“);

return $this->smtp_ok();
}

function smtp_error($string)
{
$this->log_write(“Error: Error occurred while “.$string.”.
“);
return FALSE;
}

function log_write($message)
{
$this->smtp_debug($message);

if ($this->log_file == “”) {
return TRUE;
}

$message = date(“M d H:i:s “).get_current_user().”[“.getmypid().”]: “.$message;
if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, “a”))) {
$this->smtp_debug(“Warning: Cannot open log file “”.$this->log_file.””
“);
return FALSE;
}
flock($fp, LOCK_EX);
fputs($fp, $message);
fclose($fp);

return TRUE;
}

function strip_comment($address)
{
$comment = “\([^()]*\)”;
while (ereg($comment, $address)) {
$address = ereg_replace($comment, “”, $address);
}

return $address;
}

function get_address($address)
{
$address = ereg_replace(“([
])+”, “”, $address);
$address = ereg_replace(“^.*<(.+)>;.*$”, “\1”, $address);

return $address;
}

function smtp_debug($message)
{
if ($this->debug) {
echo $message;
}
}
}[/code]
再写个发邮件函数,方便调用,代码:
[code]function sendmail($smtpserver,$smtpuser,$smtppass,$smtpemailto,$smtpusermail, $mailsubject, $mailbody){
$smtp = new smtp($smtpserver,25,true,$smtpuser,$smtppass);
//$smtp->debug = TRUE;
$smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, “HTML”);
}[/code]
调用函数发送邮件:
$body=”邮件内容。。。。。”;
sendmail(“smtp.exmail.qq.com”,”邮箱登录名”,”邮箱密码”,”收件邮箱”,”发件邮箱”,”主题”,$body);

发送邮件提示“551 User not local; please try ”错误的原因及解决办法

  一网站要嵌入一个客户反馈系统。为了方便收集反馈信息,并能及时查看信息,我决定以将反馈内容提交到邮箱。
  用了一个之前收集的PHP写的SMTP发邮件类函数,很快就搞定了,本地测试正常。传到服务器后发现收不到信,看了下函数,发现有Debug功能,开启Debug,反馈的信息如下:

 eG15Ym94MTQ3ODk2MzI1 235 Authentication successful >;
 MAIL FROM:; 250 Ok >;
 RCPT TO:; 551 User not local; please try Error: Remote host returned "551 User not local;
 please try " Error: Error occurred while sending RCPT TO command. Error: Cannot send email to ;
 Disconnected from remote host

  查了些资料,说出现以上错误信息的原因和所发邮件有没有内容、内容大小等都没有关系,是中国政府的国家防火墙(GFW,又名“金盾工程”)做了过滤的原因,它(金盾工程)定义了大陆的IP连接到大陆以外(如香港、台湾、欧洲等)的邮件服务器是不可以自己发邮件给自己的!

  相反的,我是用PHP写的发送邮件程序,在海外主机上用腾讯企业邮箱的SMTP发送邮件。看来也是被墙了。再仔细看了下上面那个解释,我注意到“不可以自己发邮件给自己”,正好我为了方便,就是用自己和邮箱账号发给自己的邮箱来收集反馈信息,那我就换个用户来发送试试看,登录腾讯企业邮箱管理,新建了一个专门发送邮件的邮箱账号,再上传测试,成功了。

  问题是解决了,但是我不明白的是,为什么自己邮箱给自己的邮箱发送就被阻止了,而发给同个服务器同个域下的另一个账号就没问题呢?不知道是出于什么目的。。。。

VisualSVN 破解方法

一、VisualSVN 通用破解方法

1. http://www.visualsvn.com/visualsvn/download,下载1.5.x版安装(需要SVN1.5或以上环境)。
2. 进入.NET Framework命令提示符,输入

ildasm "C:/Program Files/VisualSVN/bin/VisualSVN.Core.dll" /out="C:/Program Files/VisualSVN/bin/VisualSVN.Core.il"

或者用 DotNetHelper 工具,将VisualSVN.Core.dll 反编译成 VisualSVN.Core.il文件,再用记事本(最好是Editplus)打开这个文件

在这个文件中找到:“.method public hidebysig static bool  IsValid( ”这行

3、把里函数里面的内容改为:

.maxstack  8
IL_0000:  ldc.i4.
1
IL_0001:  ret

注意:“.maxstack  8”里面的“8”,要看看上下文中的同样标志,是否是8,我的是2

(去掉Lincense判断直接return true)。

或者用DotNetHelper工具,直接编译成.dll文件,注意,默认的文件名称是 VisualSVN.Core_Out.dll

把原有的 VisualSVN.Core.dll 删除,再把VisualSVN.Core_Out.dll(新编译的dll文件)改名成 VisualSVN.Core.dll

4. 回到命令行输入

ilasm "C:/Program Files/VisualSVN/bin/VisualSVN.Core.il" /dll

5、再启动vs2005,看看Visualsvn 是不是可用了

二、关于“VisualSVN-2.5.2”的破解

这个软件的核心部分是.net写的,而且没有加密和混淆,使用Reflector很容易反编译。

原来打算写一个Keygen程序,但是分析代码后发现注册信息部分使用了RSA加密,没有私钥就没办法生成注册码。

所以想到另一个方法,修改判断注册码有效性的函数“IsValid”,让其直接返回TRUE,这时无论输什么注册码,都会提示注册成功,但是无法生成有效的license,导致30天后失效。

最后想了一个笨办法,即延长有效期30年,这个方法有效

源码文件如下,请自行编译后覆盖原文件。

http://files.cnblogs.com/anotherstone/VisualSVN.Core.L_Crack.rar