h t t p:‖t. c n|r7inf b Bw我想去县医院检查乙肝准确吗里检查一下自己的肝和肺是否有什么问题

#!/usr/local/bin/perl
#┌─────────────────────────────────
#│ Aska BBS v3.1 ()
#│ Copyright (c) KentWeb
#│ webmaster@
#│ http://www./
#└─────────────────────────────────
$ver = 'ASKA BBS v3.1';
#┌─────────────────────────────────
#│ [注意事項]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 設置に関する質問はサポート掲示板にお願いいたします。
直接メールによる質問は一切お受けいたしておりません。
#└─────────────────────────────────
# 【ファイル構成例】
public_html (ホームディレクトリ)
+-- aska / aska.cgi
askalog.cgi [606]
+-- lock [707] /
#-------------------------------------------------
#-------------------------------------------------
# ライブラリ取り込み
require './jcode.pl';
# タイトル名
$title = "隠し掲示板";
# タイトル文字の色
$tCol = "#666666";
# タイトル文字サイズ
$tSize = '24px';
# 本文文字サイズ
$bSize = '13px';
# 本文文字スタイル
$bFace = '"MS UI Gothic", "MS Pゴシック", Osaka';
# 記事題名の色
$subCol = "#DD0000";
# スクリプトURL
$script = './aska.cgi';
# ログファイル
$logfile = './askalog.cgi';
# 管理用パスワード
$pass = 'seiou';
# 最大記事数(これを超える記事は古い順に削除)
$max = 50;
# 戻り先URL
$home = "http://www13.plala.or.jp/gakuki3/kakisi.htm";
# タイトル画像を使う場合 (http://から画像を指定)
$ImgT = "";
$ImgW = 300; # 横幅サイズ
$ImgH = 70; # 縦幅サイズ
# bodyタグ
$body = '';
# URLの自動リンク (0=no 1=yes)
$autolink = 1;
# 引用部色変更
1 : 色指定を行うと「引用部」を色変更します
2 : この機能を使用しない場合は何も記述しないで下さい ($refCol="";)
$refCol = "#804000";
# 1ページあたりの記事表示件数
$pageView = 10;
# ファイルロック形式
→ 0=no 1=symlink関数 2=mkdir関数
$lockkey = 0;
# ロックファイル名
$lockfile = './lock/aska.lock';
# メール通知機能
0 : 通知しない
1 : 通知する → 自分の投稿記事も通知する
2 : 通知する → 自分の投稿記事は通知しない
$mailing = 0;
# メールソフトのパス(メール通知する場合)
→ sendmailの例: /usr/lib/sendmail
→ blatjの例: c:?www?mail?blatj.exe
$mailprog = '/usr/lib/sendmail';
# メール通知先アドレス(メール通知する場合)
$mailto = 'xxx@xxx.xxx';
# タグ広告挿入オプション
の代わりに「広告タグ」を挿入。
→ 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。
$banner1 = '';
# 表示部上部に挿入
$banner2 = '';
# 表示部下部に挿入
# 記事の更新は method=POST 限定する場合(セキュリティ対策)
→ 0=no 1=yes
$postonly = 1;
# 他サイトから投稿排除時に指定する場合(セキュリティ対策)
→ 掲示板のURLをhttp://から書く
$baseUrl = '';
# 投稿制限(セキュリティ対策)
0 : しない
1 : 同一IPアドレスからの投稿間隔を制限する
2 : 全ての投稿間隔を制限する
$regCtl = 1;
# 制限投稿間隔(秒数)
→ $regCtl での投稿間隔
$wait = 30;
# 投稿後の処理
→ 掲示板自身のURLを記述しておくと、投稿後リロードします
→ ブラウザを再読み込みしても二重投稿されない措置。
→ Locationヘッダの使用可能なサーバのみ
$location = '';
# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$gethostbyaddr = 0;
# アクセス制限(半角スペースで区切る)
→ 拒否するホスト名又はIPアドレスを記述(アスタリスク可)
→ 記述例 $deny = '*. 211.154.120.*';
$deny = '';
#-------------------------------------------------
#-------------------------------------------------
if ($mode eq 'regist') { & }
elsif ($mode eq 'find') { & }
elsif ($mode eq 'howto') { & }
elsif ($mode eq 'admin') { & }
elsif ($mode eq 'usrdel') { & }
elsif ($mode eq 'check') { & }
#-------------------------------------------------
アクセス制限
#-------------------------------------------------
sub axscheck {
# IP&ホスト取得
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($gethostbyaddr && ($host eq "" || $host eq $addr)) {
$host = gethostbyaddr(pack("C4", split(/?./, $addr)), 2);
if ($host eq "") { $host = $ }
local($flag)=0;
foreach ( split(/?s+/, $deny) ) {
s/?./???./g;
s/?*/?.?*/g;
s/??/?.??/g;
if ($host =? /$_/i || $addr =? /$_/i) { $flag=1; }
if ($flag) { &error("アクセスを許可されていません"); }
#-------------------------------------------------
#-------------------------------------------------
sub html {
local($flag,$no,$dat,$nam,$eml,$sub,$r_sub,$r_com,$next,$back);
# クッキー取得
local($cnam,$ceml,$curl,$cpwd) = &get_
if (!$curl) { $curl = 'http://'; }
# レス処理
$in{'res'} =? s/?D//g;
if ($in{'res'}) {
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com) = split(//);
if ($in{'res'} == $no) { $flag=1; }
close(IN);
if (!$flag) { &error("該当記事が見つかりません"); }
$sub =? s/^Re://g;
$sub =? s/?[?d+?]?s?//g;
$r_sub = "Re:[$no] $sub";
$r_com = "& $com";
$r_com =? s//?r& /
print "?n";
print "$banner1?n" if ($banner1 ne "");
# タイトル
if ($ImgT) {
print "?n";
print "$title?n";
print <<"EOM";
メッセージ
(英数字で8文字以内)
クッキー情報を保存
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
next if ($i
$page + $pageView);
($no,$dat,$nam,$eml,$sub,$com,$url) = split(//);
if ($eml) { $nam = ""; }
if ($autolink) { &auto_link($com); }
if ($refCol) { $com =? s/([?>]|^)(&[^<]*)/$1$2/g; }
print "[$no] $sub?n";
print "投稿者:$nam 投稿日:$dat?n";
print "[]$com";
print "" if ($url);
print "?n";
close(IN);
print "?n";
$next = $page + $pageV
$back = $page - $pageV
print "?n";
if ($back >= 0) {
print "?n";
print "?n";
print "?n";
if ($next < $i) {
print "?n";
print "?n";
print "?n";
# 著作権表示(削除禁止)
print <<EOM;
#-------------------------------------------------
#-------------------------------------------------
sub regist {
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim,@file,@w);
# 投稿チェック
if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
if ($baseUrl) { &refC }
# フォーム内容をチェック
if ($in{'name'} eq "") { &error("名前が入力されていません"); }
if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
if ($in{'email'} && $in{'email'}!? /[?w?.?-]+?@[?w?.?-]+?.[a-zA-Z]{2,6}$/)
{ &error("Eメールの入力内容が不正です"); }
if ($in{'url'} eq "http://" || $in{'url'} eq "https://") { $in{'url'}=""; }
# ロック処理
&lock if ($lockkey);
open(IN,"$logfile") || &error("Open Error: $logfile");
close(IN);
# 重複投稿チェック
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim) = split(//, $file[0]);
if ($in{'name'} eq $nam && $in{'comment'} eq $com) {
&error("二重投稿は禁止です");
# 連続投稿チェック
if ($regCtl == 1) {
if ($host eq $hos && $time - $tim < $wait) { $flag=1; }
} elsif ($regCtl == 2) {
if ($time - $tim < $wait) { $flag=1; }
if ($flag) {
&error("現在投稿制限中です。もうしばらくたってから投稿をお願いします");
# 記事Noを採番
# 削除キーを暗号化
if ($in{'pwd'} ne "") { $pwd = &encrypt($in{'pwd'}); }
# 時間を取得
local($min,$hour,$mday,$mon,$year,$wday) = (localtime($time))[1..6];
@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$w[$wday],$hour,$min);
while ($max <= @file) { pop(@file); }
unshift(@file,"$no$date$in{'name'}$in{'email'}$in{'sub'}$in{'comment'}$in{'url'}$host$pwd$time?n");
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @
close(OUT);
# ロック解除
&unlock if ($lockkey);
# クッキーを記憶
if ($in{'cook'} eq 'on') {
&set_cookie($in{'name'},$in{'email'},$in{'url'},$in{'pwd'});
# メール通知処理
if ($mailing == 1) { &mail_ }
elsif ($mailing == 2 && $in{'email'} ne $mailto) { &mail_ }
# リロード
if ($location) {
if ($ENV{'PERLXS'} eq "PerlIS") {
print "HTTP/1.0 302 Temporary Redirection?r?n";
print "Content-type: text/html?n";
print "Location: $location??n?n";
print "?n";
print "投稿は正常に処理されました?n";
print "?n";
print "?n";
print "?n?n";
#-------------------------------------------------
ワード検索
#-------------------------------------------------
sub find {
print <<EOM;
キーワードを入力し、検索ボタンを押してください。
キーワードはスペースで区切って複数指定することができます。
キーワード
foreach ("AND", "OR") {
if ($in{'cond'} eq $_) {
print "$_?n";
print "$_?n";
print " 表?示 ?n";
foreach (10,15,20,25,30) {
if ($in{'view'} == $_) {
print "$_件?n";
print "$_件?n";
print <<EOM;
# ワード検索の実行と結果表示
if ($in{'word'} ne "") {
local($i,$wd,$flag,$next,$back,$enwd,@wd,@find);
# 入力内容を整理
$in{'word'} =? s/?x81?x40/ /g;
@wd = split(/?s+/, $in{'word'});
print "?n";
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
foreach $wd (@wd) {
if (index($_,$wd) >= 0) {
if ($in{'cond'} eq 'OR') { }
if ($in{'cond'} eq 'AND') { $flag=0; }
if ($flag) {
next if ($i
$page + $in{'view'});
push(@find,$_);
close(IN);
print "▽ $in{'word'} に関連する記事は$i件見つかりました。?n";
foreach (@find) {
($no,$ymd,$nam,$eml,$sub,$com,$url) = split(//);
if ($eml) { $nam=""; }
if ($url) { $com .= ""; }
print "[$no] $sub ";
print "投稿者:$nam 投稿日:$ymd?n";
print "$com?n";
print "?n";
$next = $page + $in{'view'};
$back = $page - $in{'view'};
$enwd = &url_enc($in{'word'});
if ($back >= 0) {
print "[]?n";
if ($next < $i) {
print "[]?n";
print "?n";
#-------------------------------------------------
管理モード
#-------------------------------------------------
sub admin {
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos);
# 入室画面
if ($in{'pass'} eq "") {
print <<EOM;
パスワードを入力して下さい
} elsif ($in{'pass'} ne $pass) {
&error("パスワードが違います");
# 削除処理
if ($in{'del'}) {
local($flag,$del,$no,@new);
# ロック開始
&lock if ($lockkey);
# 削除情報をマッチング
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no) = split(//);
foreach $del ( split(/?0/, $in{'del'}) ) {
if ($no == $del) { $flag=1; }
if (!$flag) { push(@new,$_); }
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @
close(OUT);
# ロック解除
&unlock if ($lockkey);
# 削除画面を表示
print <<EOM;
# 記事を展開
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com,$url,$hos) = split(//);
if ($eml) { $nam=""; }
$com =? s/]*(>|$)//g;
if (length($com) > 60) {
$com = substr($com,0,58);
$com .= "...";
print "[$no] $sub $nam - $dat &$hos&?n";
print "$com?n";
close(IN);
print <<EOM;
#-------------------------------------------------
#-------------------------------------------------
sub howto {
print <<EOM;
この掲示板はクッキー対応です。一度記事を投稿いただくと、おなまえ、Eメール、URL、削除キーの情報は2回目以降は自動入力されます。(ただし利用者のブラウザがクッキー対応の場合)
投稿記事には、タグは一切使用できません。
記事を投稿する上での必須入力項目は「おなまえ」と「メッセージ」です。Eメール、URL、題名、削除キーは任意です。
記事には、半角カナは一切使用しないで下さい。文字化けの原因となります。
記事の投稿時に「削除キー」にパスワード(英数字で8文字以内)を入れておくと、その記事は次回削除キーによって削除することができます。
記事の保持件数は最大$max件です。それを超えると古い順に自動削除されます。
既存の記事に簡単に「返信」することができます。各記事にある「返信」のリンク部を押すと投稿フォームが返信用となります。
過去の投稿記事から「キーワード」によって簡易検索ができます。トップメニューののリンクをクリックすると検索モードとなります。
管理者が著しく不利益と判断する記事や他人を誹謗中傷する記事は予?告なく削除することがあります。
#-------------------------------------------------
ユーザ記事削除
#-------------------------------------------------
sub usrdel {
local($match,$flag,$no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,@new);
# 投稿チェック
if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
if ($baseUrl) { &refC }
if ($in{'no'} eq '' || $in{'pwd'} eq '') {
&error("削除Noまたは削除キーが入力モレです");
# ロック開始
&lock if ($lockkey);
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw) = split(//);
if ($in{'no'} == $no) {
if (!$pw) { $flag=2; }
$match = &decrypt($in{'pwd'}, $pw);
push(@new,$_);
close(IN);
if ($flag == 2) { &error("削除キーが設定されていません"); }
elsif ($flag == 0) { &error("該当記事が見当たりません"); }
if ($match != 1) { &error("削除キーが違います"); }
# ログを更新
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @
close(OUT);
# ロック解除
&unlock if ($lockkey);
#-------------------------------------------------
デコード処理
#-------------------------------------------------
sub decode {
local($buf,$key,$val);
undef(%in);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
$post_flag=1;
if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("投稿量が大きすぎます"); }
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
$post_flag=0;
$buf = $ENV{'QUERY_STRING'};
foreach ( split(/&/, $buf) ) {
($key, $val) = split(/=/);
$val =? tr/+/ /;
$val =? s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/
# S-JISコード変換
&jcode'convert(*val, "sjis", "", "z");
# タグ処理
$val =? s/&/&/g;
$val =? s/"/&/g;
$val =? s//&/g;
$val =? s/?0//g;
# 改行処理
if ($key eq "comment") {
$val =? s/?r?n//g;
$val =? s/?r//g;
$val =? s/?n//g;
$val =? s/?r//g;
$val =? s/?n//g;
$in{$key} .= "?0" if (defined($in{$key}));
$in{$key} .= $
if ($in{'sub'} eq "") { $in{'sub'} = "無題"; }
$page = $in{'page'};
$mode = $in{'mode'};
# タイムゾーン設定
$ENV{'TZ'} = "JST-9";
$lockflag=0;
$headflag=0;
#-------------------------------------------------
HTMLヘッダ
#-------------------------------------------------
sub header {
if ($headflag) { }
print "Content-type: text/html?n?n";
print <<"EOM";
$headflag=1;
#-------------------------------------------------
エラー処理
#-------------------------------------------------
sub error {
if ($lockflag) { & }
print <<EOM;
#-------------------------------------------------
クッキー発行
#-------------------------------------------------
sub set_cookie {
local(@cook) = @_;
local($gmt, $cook, @t, @m, @w);
@t = gmtime(time + 60*24*60*60);
@m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
# 国際標準時を定義
$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
$w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]);
# URLエンコード
foreach (@cook) {
s/(?W)/sprintf("%%%02X", unpack("C", $1))/
$cook .= "$_";
print "Set-Cookie: ASKA_BBS=$ expires=$gmt?n";
#-------------------------------------------------
クッキー取得
#-------------------------------------------------
sub get_cookie {
local($key, $val, *cook);
# クッキーを取得
$cook = $ENV{'HTTP_COOKIE'};
# 該当IDを取り出す
foreach ( split(/;/, $cook) ) {
($key, $val) = split(/=/);
$key =? s/?s//g;
$cook{$key} = $
# データをURLデコードして復元
foreach ( split(//, $cook{'ASKA_BBS'}) ) {
s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/
push(@cook,$_);
return (@cook);
#-------------------------------------------------
#-------------------------------------------------
sub encrypt {
local($in) = @_;
local($salt, $enc, @s);
@s = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
$salt = $s[int(rand(@s))] . $s[int(rand(@s))];
$enc = crypt($in, $salt) || crypt ($in, '$1$' . $salt);
#-------------------------------------------------
#-------------------------------------------------
sub decrypt {
local($in, $dec) = @_;
local($salt) = $dec =? /^?$1?$(.*)?$/ && $1 || substr($dec, 0, 2);
if (crypt($in, $salt) eq $dec || crypt($in, '$1$' . $salt) eq $dec) {
return (1);
return (0);
#-------------------------------------------------
ロック処理
#-------------------------------------------------
sub lock {
# 古いロックは削除
if (-e $lockfile) {
local($mtime) = (stat($lockfile))[9];
if ($mtime < time - 30) { & }
# リトライ回数定義
local($retry) = 5;
# symlink関数式ロック
if ($lockkey == 1) {
while (!symlink(".", $lockfile)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
# mkdir関数式ロック
} elsif ($lockkey == 2) {
while (!mkdir($lockfile, 0755)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
$lockflag=1;
#-------------------------------------------------
ロック解除
#-------------------------------------------------
sub unlock {
if ($lockkey == 1) {
unlink($lockfile);
} elsif ($lockkey == 2) {
rmdir($lockfile);
$lockflag=0;
#-------------------------------------------------
メール送信
#-------------------------------------------------
sub mail_to {
local($msub,$mbody,$mcom,$email,$ptype);
# メールプログラムのパスチェック
unless (-e $mailprog) { &error("メールプログラムのパスが不正です"); }
if ($mailprog =? /blat/i) { $ptype=2; } else { $ptype=1; }
# メールタイトルを定義
$msub = "[$title : $no] $in{'sub'}";
# 本文の改行?タグを復元
$mcom = $in{'comment'};
$mcom =? s//?n/g;
$mcom =? s/&//g;
$mcom =? s/&/"/g;
$mcom =? s/&/&/g;
$mbody = "$titleに以下の投稿がありました。?n?n";
$mbody .= "Date : $date?n";
$mbody .= "Host : $host?n";
$mbody .= "Agent: $ENV{'HTTP_USER_AGENT'}?n?n";
$mbody .= "名前 : $in{'name'}?n";
$mbody .= "email: $in{'email'}?n";
$mbody .= "題名 : $in{'sub'}?n";
$mbody .= "参照 : $in{'url'}?n" if ($in{'url'});
$mbody .= "?n$mcom?n";
# BlatJ送信
if ($ptype == 2) {
# 一時ファイル書き出し
local($tempfile) = "./$$?.tmp";
open(TMP,">$tempfile") || &error("Write Error: $tempfile");
print TMP $
close(TMP);
# 送信処理
open(MAIL,"| $mailprog $tempfile -t $mailto -s ?"$msub?" -q")
|| &error("送信失敗");
close(MAIL);
# 一時ファイル削除
unlink($tempfile);
# sendmail送信
# 題名をBASE64化
$msub = &base64($msub);
# メールアドレスがない場合は管理者アドレスに置き換え
if ($in{'email'} eq "") { $email = $ }
else { $email = $in{'email'}; }
# sendmail送信
open(MAIL,"| $mailprog -t") || &error("メール送信失敗");
print MAIL "To: $mailto?n";
print MAIL "From: $email?n";
print MAIL "Subject: $msub?n";
print MAIL "MIME-Version: 1.0?n";
print MAIL "Content-type: text/ charset=ISO-2022-JP?n";
print MAIL "Content-Transfer-Encoding: 7bit?n";
print MAIL "X-Mailer: $ver?n?n";
foreach ( split(/?n/, $mbody) ) {
&jcode'convert(*_, 'jis', 'sjis');
print MAIL $_, "?n";
close(MAIL);
#-------------------------------------------------
自動リンク
#-------------------------------------------------
sub auto_link {
$_[0] =? s/([^=^?"]|^)(https??:[?w?.???-?/???&?=?@?;?#?:?%]+)/$1$2/g;
#-------------------------------------------------
URLエンコード
#-------------------------------------------------
sub url_enc {
local($_) = @_;
s/(?W)/'%' . unpack('H2', $1)/
#-------------------------------------------------
REFチェック
#-------------------------------------------------
sub refCheck {
local($ref) = $ENV{'HTTP_REFERER'};
$ref =? s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/
$baseUrl =? s/(?W)/??$1/g;
if ($ref && $ref !? /$baseUrl/i) { &error("不正なアクセスです"); }
#-------------------------------------------------
BASE64変換
#-------------------------------------------------
# とほほのWWW入門で公開されているルーチンを参考にしました。
# http://tohoho.wakusei.ne.jp/
sub base64 {
local($sub) = @_;
&jcode'convert(*sub, 'jis', 'sjis');
$sub =? s/?x1b?x28?x42/?x1b?x28?x4a/g;
$sub = "=?iso-2022-jp?B?" . &b64enc($sub) . "?=";
sub b64enc {
local($ch)="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
local($x, $y, $z, $i);
$x = unpack("B*", $_[0]);
for ($i=0; $y=substr($x,$i,6); $i+=6) {
$z .= substr($ch, ord(pack("B*", "00" . $y)), 1);
if (length($y) == 2) {
$z .= "==";
} elsif (length($y) == 4) {
$z .= "=";
#-------------------------------------------------
チェックモード
#-------------------------------------------------
sub check {
print <<EOM;
Check Mode
# ログファイル
if (-e $logfile) {
print "LOGパス:OK?n";
if (-r $logfile && -w $logfile) { print "LOGパーミッション:OK?n"; }
else { print "LOGパーミッションが不正です。?n"; }
print "LOGのパスが不正です:NG → $logfile?n";
# ロックディレクトリ
print "LOCK形式:";
if ($lockkey == 0) { print "LOCK設定なし?n"; }
if ($lockkey == 1) { print "symlink?n"; }
else { print "mkdir?n"; }
local($lockdir) = $lockfile =? /(.*)[???/].*$/;
print "LOCK DIR:$lockdir?n";
if (-d $lockdir) {
print "LOCK DIRパス:OK?n";
if (-r $lockdir && -w $lockdir && -x $lockdir) {
print "LOCK DIRパーミッション:OK?n";
print "LOCK DIRパーミッション:NG → $lockdir?n";
print "LOCK DIRパス:NG → $lockdir?n";
print <<EOM;4070人阅读
vc6.0安装过程中出现的问题——解决
这是我在安装vc6.0过程中曾经与到的几个问题。问题的答案是我从网上搜到的然后总结了一下。希望能够对仍然没有解决问题的朋友有所帮助。
问题一: Thelanguage dll'vb6chs.dll'could not be found。1 M8 i# q% `&#43; F) u( X- B
解决方法:在安装文件夹中搜索 vb6chs.dll文件然后复制到5 P&&F7 a& i# R9 R&&V
c:windows\system32\文件夹中。也可以到已经安装好的
vc60中拷贝一个到c:windows\system32\文件夹中。% Q& U# M. t: {0 h. D$ N5 U1 n
问题二: Javasign.dll不能在系统注册数据库中注册问题。
解决方法:到网站下载一个java虚拟机。安装即可。下载
下载文件为:msjavx86 文件大小:5.19MB. l7 s( _/ n$ y3 i
问题三: Setup was unable to create a DCOM user account
6 O4 \' B; Y3 ~1 Z: Q
in order to register 'C:\Program Files\Microsoft: y& _4 _$ _9 \8 D
Visual Studio\Common\Tools\VS-Ent98\Vanalyzr\valec.exe&
& P- d# o& U3 o
在【计算机管理--&本地用户和组--&用户】里将描述为“Visual Studio Analyzer 服务器组件的帐号”用户删掉。然后再重装VC,就OK了
, r- M$ W- j9 B&&w
问题四:安装结束时,会提示你的安装未完成,系统提示让你进微软官方网站查找并修改相关错误的信息。还有,就是安装之后可以编译,但不能运行。
这个问题我一般都会用问题三所介绍的方法来解决,但是最近我给别人安装的时候,发现他的机子在计算机管理中没有用户和组(家庭版xp),我在网上找到这个方法,结果安装成功。没问题!
出现这类问题,不是由于你的光盘有问题,也不是系统问题。绝大部分人解决这类问题,往往是重新安装系统。虽然重新安装系统能解决这个问题,但那也是很麻烦的。/ q5 D, O&#43; Y& c% J- v
: E0 W; Y/ k) m&#43; h' W& q- c
解决问题:这是由于安装visual studio时,系统会在注册表中写有信息,而且在其他文件夹中也有其文件。总而言之,就是你如果简单地将program file目录下的visual studio文件夹删掉,未能彻底删除该软件,从而在你重新安装时会出现上述情况。所以解决这类问题的办法,就是彻底地、干净地删除visual studio。' o&#43; |8 ?) l: o! P, \& ?
下面我们来谈谈如何彻底地、干净地删除visual studio。分为下面几步来完成。, P/ ], ^& J% V& l# \$ o
/ X% k0 _7 v8 U9 i. [4 a* D3 k&#43; x
第一步 删除注册表信息
点击“开始”按钮,单击“运行”,敲入RegEdit然后是你要删除的注册表中的某一项。
或者你敲入Regedit 打开注册表编辑器
0 H0 X/ q5 S&#43; K
在注册表中按照目录顺序找到具体的某一项,然后按delete键删除。: P/ E; N2 p4 s! g# B
: f# ]/ v7 }&#43; M4 s8 Q( d0 X, k( _
上述是讲了两种删除注册表中某一项的方法。下面列出你要删除的:
, |; U- u9 ~&&O7 u
HKEY_LOCAL_MACHINE\Software\Microsoft\Devstudio3 i&&I% s* Q6 {3 {&#43; e
HKEY_LOCAL_MACHINE\Software\Microsoft\HTML Help Collections
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Basic% j. S&#43; e0 _. S- k1 D/ x
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Component Manager/ y&#43; _& ]& v5 N; X2 J/ p& A
) z6 i) M! o, N0 s& n
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Modeler/ G- M- M& r2 N0 V- j6 o/ z
# m2 s) H& P&#43; A&&m& S
HKEY_LOCAL_MACHINE\Software\Microsoft\Visual Studio
0 W6 V6 h&#43; n. i3 D&&`0 t( U9 j
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Visual Studio 6.0& Z5 {7 z& k# B: p* r
7 P( m% T- r$ o6 }&&F7 N! p
MSDN Library
$ ?& H&#43; |/ D; T8 c
! E& b, I7 B( h1 F% y
Visual Studio 6.0 components; S' b) [# k! r% b9 ~
6 F$ L; n/ t7 X9 k
HKEY_CURRENT_USER\Software\Microsoft\Devstudio; I3 {- ?& r* W5 z0 d
8 j: J0 j) R& {9 w( B9 s4 Y
HKEY_CURRENT_USER\Software\Microsoft\Visual Basic- u& ^5 e& V4 ?) M; l8 r/ [$ F
& u1 p. [0 U: y* {
HKEY_CURRENT_USER\Software\Microsoft\Visual Component Manager- ?$ I. u/ g4 U% ^! F& ^4 H
HKEY_CURRENT_USER\Software\Microsoft\Visual Modeler
HKEY_CURRENT_USER\Software\Microsoft\Visual Studio
2 \$ j7 z$ o1 D4 d$ o% R
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\StartMenu\&Programs\Microsoft Visual Studio 6.0; _7 \7 Y9 b3 `: D9 ?
MSDN Library
other Visual Studio 6.0 components
HKEY_USERS\S-1-5-21----72713\Software\Microsoft\Visual Studio
& m: W&#43; h* w- t3 y# w( F
HKEY_USERS\S-1-5-21----72713% U$ `, r&#43; s- v7 ~. U. K! F
\Software\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\StartMenu\&Programs\Microsoft Visual Studio 6.0
MSDN Library
-or-( w0 j2 W1 k3 o: U
other Visual Studio 6.0 components
5 ?4 m: {0 H& f0 ^# A9 \
第二步删除目录
! J) i0 G1 q( C; a
C:\Program Files\Microsoft Visual Studio
C:\Program Files\Common Files\Designer- k8 l% ~8 c) D( ]% u
&#43; r6 y1 i&&l1 {* r( M&&P
C:\Program Files\Common Files\Microsoft Shared\MSDesigners985 N( X4 N/ \$ ]; b0 D, @
C:\Program Files\Common Files\Microsoft Shared\MSDN
- [) N7 n( A5 P&#43; w! V0 k
C:\Program Files\Common Files\Microsoft Shared\Triedit; |, x! A* i, a7 J
C:\Program Files\Common Files\Microsoft Shared\VS988 ?6 a6 L9 t# ~8 Q& R( E6 Y
C:\Program Files\Common Files\Microsoft Shared\Wizards98; |9 A. \1 |8 f3 _% _
对于windows2000的用户
& V8 J8 S. }&#43; ^8 k. H& I
找到C:\Documents and Settings\ your login \Application Data\Microsoft该目录下删除Visual Studio文件
第三步删除动态链接库dll文件' `# J) i! Y# P& ~% S& X
点击“开始”--à 搜索文件和文件夹1 v, l1 ~9 x5 l9 H' S
搜索下面的文件,并将其删除) f' ]9 O4 c&#43; V3 ?
Hh.exe,Hh.dat,Hhcolreg.dat,Hhctrl.ocx,Itss.dll,Itircl.dll6 b&#43; A& N: s: D' `) s
&#43; r6 c0 t. Q4 R3 ]& P
第四步检查Comcat.dll文件0 V# Q4 T) V$ M9 s: U' z% ~5 `( A
) ]% y) X/ [$ y6 Q2 T& f
在Windows\System或WinNT\System32目录下找到Comcat.dll文件,如果该文件大小不是22K的话,则进行下面的操作:. P; J& b0 S2 T# a4 B- b( W. ?
点击“开始”按钮,单击“运行”,敲入regsvr32 /u comcat.dll
在Windows\System或WinNT\System32目录下找到Comcat.dll文件,将其删除
从visual studio安装盘中,找到\Common\Ide\Ide98\Redist \Comcat.dll文件将其复制到Windows\System或WinNT\System32目录下&&\9 k. v0 w3 t7 v8 g) D( M
' {* A; O, n4 o1 E% R1 \
“开始”按钮,单击“运行”,敲入regsvr32 comcat.dll
&#43; q7 T6 Z7 v&&A4 D/ r' M% S
经过上述四步的操作,visual studio被我们从系统中彻底删除了,这时只要重新进行安装即可。: s' |3 D7 p/ w8 ]; p- L! x
建议# ]& T0 c8 R/ V. y( P1 L
2 c, B& G# a0 Y/ Y3 E4 Y' u7 g7 J: y
注册表是Window和windows环境下的绝大部分应用软件都会写注册表的。所以删除软件,不能简单将文件夹删除,还应删除相应的注册表信息。( X7 x# f% p8 x
经过上述的手动删除Microsoft visual studio软件的过程,我们更加熟悉了注册表的操作和软件安装时,对我们计算机所做的操作。&&Z/ w3 s( I/ ~& Z. _
1.先安装VC6.0完了后会自动提示是否装MSDN&&I8 [3 l5 N8 z' ?* X- I
5 H! e4 P6 J7 f6 }, k# m$ H& t4 H6 Y
2.按步骤将MSDN装好! y$ m1 F* P&&L2 K
3.打开MSDN这时他会叫你选择CD2,将CD2给解出来; q% U$ D, A' ?! w) l& \& K
, A1 ~8 ?1 d& l0 Y. S&#43; D2 I
放在C:\Program Files\Microsoft Visual Studio\
2 B0 J* r% y6 V&&o: |&#43; W
MSDN98\98VS\2052文件夹里就OK了.
我给你想了几个解决方法你试试: }! Q* s& N6 V$ |&&a( w' t$ a$ {
# ~# V' o, V; I2 h6 h
1.你下栽的一定是ISO文件吧,象1楼说的那样用虚模光驱
安装,不过我的也是ISO光盘镜象但我是用WINRAR解出来的.
2.请你确认下MSDN CD2确认是放在C:\Program Files\9 A&&j& u4 f1 z: c' ?( \
Microsoft Visual Studio\MSDN98\98VS\2052O 里面
0 [&&t( b, f. |# d2 C
3.有可能你没有完全安装在安装的时候出现了错误建议; t0 Y% J6 F2 I
/ N& `9 P& L% i& B. q
删除重装试试.) ?( q* Y7 T0 @- B
4.以上方法都不行的话请将VC6.0删除掉,然后装MSDN6 o- k/ ~. O9 S&&t&#43; _) U
! I! ^9 y&#43; v3 G&#43; v. I8 d
这是我在安装vc6.0过程中曾经与到的几个问题。问题的答案是我从网上搜到的然后总结了一下。希望能够对仍然没有解决问题的朋友有所帮助。
问题一:& &Thelanguage dll'vb6chs.dll'could not be found。问题
& && && &&&解决方法:在安装文件夹中搜索 vb6chs.dll文件然后复制到
: j6 g. c* t8 L5 x7 R7 P6 m/ d
& && && &&&c:windows\system32\文件夹中。也可以到已经安装好的
& && && &&&vc60中拷贝一个到c:windows\system32\文件夹中。
问题二:& &Javasign.dll不能在系统注册数据库中注册问题。 &#43; N& I7 T! f& l, K! {0 I9 i
& && && &&&解决方法:到网站下载一个java虚拟机。安装即可。下载
& && && &&&地址:& & (声明:此方法转载自Fallout's梦的碎片)
& && && &&&下载文件为:msjavx86& &文件大小:5.19MB
&#43; R& R* s/ n1 \
问题三:& & Setup was unable to create a DCOM user account
( C& v7 R: K3 P
& && && &&&in order to register 'C:\Program Files\Microsoft
& && && &&&Visual Studio\Common\Tools\VS-Ent98\Vanalyzr\valec.exe&& &8 ^0 @! u7 n1 p
& && && &&&解决方法:这是Visual Studio的一个BUG,只出现在Windows 2000/XP下。
' b& o3 M# E* S/ ?- ?. n$ e
& && && &&&如果你不使用Visual Studio Analyzer,可以在安装时选择Custom,
& && && &&&然后在Enterprise Tools中清除掉Visual Studio Analyzer。
9 b5 Z( w5 i: T5 g. k
& && && &&&再安装就没有这个问题了。如果一定要使用Visual Studio Analyzer,
( t5 |7 J5 y&#43; I0 f- ?
& && && &&&可以在安装后在进行配置工作,参考微软的Knowledge Base的文章:
& && && & “257413“ BUG: &Setup Was Unable to Create a DCOM User Account&
& && && &&&Error Message in Visual Studio 6.0”。
- j8 w9 l9 U&&q$ s7 [, O
另外建议大家在安装软件时尽量使用英文名或数字,不要用中文。这样可以避免一些不必要的麻烦。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40735次
排名:千里之外
原创:10篇
转载:21篇
(1)(1)(22)(1)(2)(4)

我要回帖

更多关于 去医院检查乙肝 的文章

 

随机推荐