2011-05-11 112 views
0

我正在使用bat文件来保护一些文件。它要求用户输入密码以使文件夹可见。如何保护文件

但在我的C#程序中,我想打开文件,但它似乎无法找到该文件,它已被bat文件隐藏(if (File.Exists(ls_Path))返回false)。

是否与我的bat文件有关?

我在窗口正常隐藏测试我的程序仍然能够从路径读出。

cls 
@ECHO OFF 
title Folder Locker 
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK 
if NOT EXIST Locker goto MDLOCKER 
:CONFIRM 
echo Are you sure u want to Lock the folder(Y/N) 
set/p "cho=>" 
if %cho%==Y goto LOCK 
if %cho%==y goto LOCK 
if %cho%==n goto END 
if %cho%==N goto END 
echo Invalid choice. 
goto CONFIRM 
:LOCK 
ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
echo Folder locked 
goto End 
:UNLOCK 
echo Enter password to Unlock folder 
set/p "pass=>" 
if NOT %pass%==123 goto FAIL 
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker 
echo Folder Unlocked successfully 
goto End 
:FAIL 
echo Invalid password 
goto end 
:MDLOCKER 
md Locker 
echo Locker created successfully 
goto End 
:End 

回答

0

使用VBScript,而不是检查文件是否存在,只是尝试打开它并使用错误陷阱。我不太熟悉批次,但我怀疑你可以使用类似的技术。

相反的:

If objFSO.FileExists(someFileVariable) Then _ 
Set objTESTfile = objFSO.OpenTextFile(someFileVariable, ForReading, True, TristateFalse) 

你必须:

On Error Resume Next 
Set objTESTfile = objFSO.OpenTextFile(someFileVariable, ForReading, True, TristateFalse) 
If Err.Number= 0 Then 
    ' opened ok, do stuff 
Else 
    ' failed, do something else 
End If