青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-22  評(píng)論-7  文章-0  trackbacks-0

昨天,公司的美國(guó)客戶發(fā)郵件給我,說(shuō)我的軟件出問(wèn)題了,我查來(lái)查去,發(fā)現(xiàn)居然是服務(wù)器上一個(gè)目錄無(wú)法刪除,一刪除就報(bào) cannot read from the source file or disk. 如果用命令行方式刪除,則報(bào)  cannot find the specified path。一開(kāi)始以為是文件系統(tǒng)遭破壞了,用 chkdsk 命令檢查,沒(méi)有發(fā)現(xiàn)問(wèn)題,后來(lái)仔細(xì)一看,那個(gè)不能刪除的目錄名居然以一個(gè)空格字符結(jié)尾,而我嘗試在資源管理器中創(chuàng)建一個(gè)目錄以空格結(jié)尾結(jié)果資源管理器會(huì)自動(dòng)將末尾的字符刪除,用程序創(chuàng)建,結(jié)果也一樣,這個(gè)美國(guó)佬是怎么創(chuàng)建這個(gè)古怪的目錄的?出現(xiàn)這種情況后不但是無(wú)法刪除這么簡(jiǎn)單,列目錄什么的也會(huì)有問(wèn)題,這樣一來(lái),系統(tǒng)的運(yùn)行都會(huì)有問(wèn)題,我想到的最壞結(jié)果就是可能不得不格式化服務(wù)器的硬盤,想到這里我?guī)缀醪桓以傧胂氯チ耍esearch了一天,后來(lái)終于找到了解決方案,并且由此還發(fā)現(xiàn)問(wèn)題的起因是我程序上的一個(gè)Bug造成,可怕的Bug!

Windows 的文件系統(tǒng)可以支持特殊字符的文件名,比如以空格結(jié)尾,以點(diǎn)號(hào)結(jié)尾等,有一篇英文的文章說(shuō)NTFS 支持這些文件名,但FAT不支持,我試了一下,F(xiàn)AT也支持。但Windows API 卻對(duì)這些特殊文件名進(jìn)行了限制,也就是說(shuō),我們通過(guò)程序是無(wú)法創(chuàng)建一個(gè)以空格或點(diǎn)號(hào)結(jié)尾的文件名或路徑名的。但Copy 和 Move的API 卻不做這方面的限制,這導(dǎo)致我們可以從其他的文件系統(tǒng)拷貝或移動(dòng)一個(gè)特殊文件名的文件到Windows 的文件系統(tǒng),但一旦在Windows的文件系統(tǒng)上創(chuàng)建成功,就無(wú)法通過(guò)正常途徑刪除或改名。因?yàn)檎{(diào)用API 刪除或改名時(shí),API 會(huì)首先進(jìn)行規(guī)則檢查,如果發(fā)現(xiàn)不符合規(guī)則,則直接忽略。這兩組API 在處理上的不一致,帶來(lái)一個(gè)非常嚴(yán)重的安全問(wèn)題,可惜微軟到了Windows7 還沒(méi)有去彌補(bǔ)這個(gè)問(wèn)題。

下面讓我們用代碼復(fù)現(xiàn)這個(gè)問(wèn)題

            try
            {
                string dir = @"C:\Temp\abc";
                System.IO.Directory.CreateDirectory(dir); //在C:\Temp 目錄下創(chuàng)建abc 這個(gè)目錄
 
                string dir1 = @"c:\Temp\Bcd \";
 
                System.IO.Directory.Move(dir, dir1); //將ABC 移動(dòng)到"Bcd "這個(gè)目錄去,注意這里 Bcd后面有個(gè)空格
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

在運(yùn)行這段代碼前,你一定要有一點(diǎn)思想準(zhǔn)備,因?yàn)橐坏┻\(yùn)行成功,你的 C:\temp 目錄下就有了一個(gè) “Bcd ”這樣的古怪的目錄,而且你用正常的方法根本無(wú)法刪除它。如果我在此打住,你一定會(huì)為之抓狂。不過(guò)沒(méi)關(guān)系,我已經(jīng)找到了刪除它的方法,下面就和大家共享:

 

Windows 的命令行工具 Del 和 Rd 支持一種方式可以不對(duì)輸入文件名的合法性進(jìn)行檢查,這種方式是在完整目錄名前加一個(gè) \\?\

比如

del “\\?\C:\Temp\xxx.” 刪除xxx. 這個(gè)文件

刪除目錄的話

rd /s “\\?\C:\Temp\xxx.” 刪除 xxx. 這個(gè)目錄

執(zhí)行這個(gè)命令后,就可以刪除這些古怪的文件了。注意,這里一定要輸入完整的目錄才可以,相對(duì)路徑不行。

 

講到這里,我們知道了原因和解決方案,那么在這里我需要提醒大家我們以后在程序中調(diào)用 System.IO.Directory.Move 或者 System.IO.File.Copy , System.IO.File.Move 這些函數(shù)前,一定要注意先判斷一下輸入的目標(biāo)文件名或目錄名的結(jié)尾是不是空格或點(diǎn)號(hào),可能還要判斷其他情況,但目前我只知道這兩種情況,而且結(jié)尾是空格非常有隱蔽性。

posted on 2010-05-28 14:58 楚天清秋 閱讀(3611) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品久久久久aaaa| 国内视频一区| 欧美在线精品免播放器视频| 午夜精品影院| 国产字幕视频一区二区| 美女视频网站黄色亚洲| 久久综合狠狠综合久久综青草 | 国产精品免费观看视频| 性做久久久久久| 久久精品国产久精国产一老狼| 亚洲国产精品一区二区尤物区| 亚洲电影观看| 欧美天堂亚洲电影院在线观看| 香蕉免费一区二区三区在线观看| 久久国产精品电影| 日韩小视频在线观看| 亚洲欧美日韩在线综合| 亚洲高清在线| 亚洲视频一区| 亚洲片在线资源| 亚洲嫩草精品久久| 亚洲精品在线观看免费| 亚洲中字黄色| 亚洲精品五月天| 欧美一级视频| 亚洲视频你懂的| 久久久精品免费视频| 亚洲综合电影| 欧美成人蜜桃| 久久av资源网站| 欧美日韩精品三区| 理论片一区二区在线| 国产精品久久久久7777婷婷| 欧美大色视频| 国产一区在线播放| 一本色道久久88综合亚洲精品ⅰ| 在线观看日韩av先锋影音电影院| 亚洲午夜电影在线观看| 亚洲精品一二区| 久久久亚洲国产天美传媒修理工| 香蕉久久夜色| 欧美亚韩一区| 亚洲伦伦在线| 亚洲精品偷拍| 美女福利精品视频| 另类综合日韩欧美亚洲| 国产一区二区剧情av在线| 宅男66日本亚洲欧美视频| 亚洲乱码一区二区| 欧美大尺度在线观看| 欧美成人免费va影院高清| 红桃视频亚洲| 久久九九免费视频| 久久亚洲图片| 国产主播一区二区| 欧美在线影院在线视频| 久久久久综合网| 国产一区二区三区久久悠悠色av| 亚洲在线中文字幕| 欧美在线电影| 国内精品国语自产拍在线观看| 亚洲欧美日韩成人| 欧美在线在线| 黄色日韩在线| 美国十次成人| 亚洲第一毛片| 一本久道久久综合狠狠爱| 欧美日韩高清在线| 妖精视频成人观看www| 亚洲欧美区自拍先锋| 国产精品尤物| 久久成人人人人精品欧| 嫩草国产精品入口| 日韩午夜电影在线观看| 欧美日韩免费精品| 亚洲一区国产视频| 久久激情一区| 136国产福利精品导航| 欧美搞黄网站| 一区二区三区高清在线| 久久福利视频导航| 亚洲大胆美女视频| 欧美日韩大陆在线| 亚洲欧美日韩一区在线观看| 久久在线免费观看视频| 亚洲日本成人女熟在线观看| 欧美日韩亚洲国产精品| 亚洲欧美一区二区视频| 免费成人网www| 一区二区免费看| 国产三区精品| 欧美国产日韩一区二区三区| 一区二区三区久久网| 久热精品视频在线观看一区| 99国产成+人+综合+亚洲欧美| 国产精品久久久久久久久免费 | 欧美色区777第一页| 午夜激情亚洲| 欧美高清视频一区二区三区在线观看 | 久久久欧美精品sm网站| 99国产精品久久久久久久成人热| 欧美亚洲一区二区在线| 91久久久久久久久久久久久| 国产精品久久久久久久一区探花| 久久国产加勒比精品无码| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲一区二区伦理| 亚洲激精日韩激精欧美精品| 国产精品永久入口久久久| 欧美成人激情在线| 欧美一区二区三区免费大片| 日韩一级网站| 欧美激情一区二区三区在线| 久久精品国产久精国产一老狼| 日韩视频精品在线| 在线看日韩av| 国产亚洲一区二区三区在线观看| 欧美日韩精品国产| 麻豆久久婷婷| 久久久久国色av免费观看性色| 亚洲一区二区三区视频播放| 亚洲精品国精品久久99热一| 美日韩精品视频免费看| 久久精品国产清自在天天线| 亚洲在线一区二区| 一本不卡影院| 99热免费精品| 亚洲毛片网站| 亚洲精品男同| 亚洲欧洲日本专区| 亚洲国产欧美一区二区三区同亚洲 | 日韩视频一区二区三区在线播放免费观看| 国产午夜久久| 国产欧美一区二区精品忘忧草| 国产精品国产三级国产普通话99 | 欧美极品在线视频| 美女爽到呻吟久久久久| 久久久久久国产精品mv| 久久av一区二区三区| 欧美自拍偷拍| 久久大逼视频| 久久国产直播| 久久久久九九九九| 老牛国产精品一区的观看方式| 久久久久久夜| 欧美成人免费在线视频| 欧美韩日高清| 欧美日韩一区二区三区四区五区| 欧美精品一区在线发布| 欧美日韩国产欧| 欧美午夜电影在线观看| 国产精品一区二区黑丝| 国产日韩欧美在线视频观看| 国模吧视频一区| 在线观看视频亚洲| 日韩亚洲欧美成人| 亚洲综合三区| 久久久久久综合网天天| 欧美成人三级在线| 亚洲美女性视频| 亚洲欧美日产图| 久久亚洲一区二区| 欧美日韩国产综合久久| 国产精品伊人日日| 在线国产精品一区| 99精品国产在热久久| 欧美一区二区三区免费观看视频| 久久久免费精品视频| 亚洲国产成人久久综合| 这里是久久伊人| 久久国产精品久久久| 欧美激情91| 国产日韩精品视频一区二区三区| 亚洲第一毛片| 亚洲欧美成人精品| 欧美成人综合网站| 亚洲夜晚福利在线观看| 久久久无码精品亚洲日韩按摩| 欧美日韩喷水| 在线观看欧美日本| 亚洲免费在线视频| 欧美激情欧美激情在线五月| 亚洲一区二区在线免费观看视频 | 久久久另类综合| 欧美新色视频| 亚洲欧洲精品一区| 欧美在线观看一区二区| 亚洲激情中文1区| 久久黄金**| 国产精品大片| 99re8这里有精品热视频免费| 久久精品国产亚洲5555| av不卡在线观看| 免费成年人欧美视频| 国产欧美精品一区aⅴ影院| av成人免费观看| 欧美国产在线观看| 欧美在线免费观看| 国产精品一区在线播放| 亚洲一区二区免费视频|