よい子はマネしちゃいけないデモを真似してみた

執筆日時:

Developer Camp 2012 Japan Fall に参加してきました!(1日目) - だるろぐ でやってたデモを真似してみた。

# Default.cshtml

@using System.IO @using System.Diagnostics

@{ // 結果を出力するファイルのパスを決める var path = HttpContext.Current.Server.MapPath("~/result.txt");

// dir c:\ > result.txt を実行( /c は実行して終了するオプション) Process.Start("cmd", @"/c dir c:\ > " + path).WaitForExit();

// result.txt を読み込む var result = File.ReadAllText(path); }

<!DOCTYPE html>

<html lang="ja"> <head> <meta charset="utf-8" /> <title>マイ サイトのタイトル</title> <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> </head> <body> <pre><code style="font-family: Consolas, monospace;"> @result </code></pre> </body> </html>

f:id:daruyanagi:20121006184303p:plain

わぉ! サーバーの C ドライブ直下の内容がみえてる! これをああしたりこうしたりすれば ruby が動いちゃったりするのか(ゲフンゲフン

でも、よい子は真似しないように。実際のデモでは WaitForExit() をし忘れて result.txt が読めなくなるなんてハプニングがあったけど、こういうことをやり続ければいずれサーバーが不安定になるよね(知らんけど)。少なくとも、Free/Share ではあんまりやらないほうがいいんだろう。Reserved が使えるお金持ちだけやれ。

ちなみに、帝国兵のひとは App_Code フォルダが好きだということでそこにクラスを書いていたけれど、今回はそのままだと面白くないかなと思ったので Default.cshtml に書いてある。わしも App_Code フォルダ大好き。結構いろんなところで使えて便利なんだよね。

使いこなしていきたいところ。

ついでに(1) ―― ローカルで実行した場合

f:id:daruyanagi:20121006184549p:plain

dir c:\ > result.txt の時点でコケるみたい。きっと権限の問題なんだろうな。

ついでに(2) ―― ファイル、読んでみたくなるよね?

f:id:daruyanagi:20121006184938p:plain

試しに C:\eula.1028.txt を読んでみようと思ったけど失敗した。まぁ、そうだろうな。