如何使用VBScript关闭特定文件夹?

如何使用VBScript关闭特定文件夹?

问题描述:

我试图让使用VBScript一个简单的程序,关闭每次被打开时,一个特定的文件夹,从而拒绝访问该文件夹。我已经成功地在这里为许多文件夹使用此代码,但由于某种原因,它不适用于C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp如何使用VBScript关闭特定文件夹?

Do 
    WindowTitle = "FOLDERNAME" 
    Set shell = CreateObject("WScript.Shell") 
    success = shell.AppActivate(WindowTitle) 
    If success Then shell.SendKeys "%{F4}" 
Loop 

有什么办法可以拒绝使用.vbs文件访问特定文件夹吗?

+1

调整文件夹权限。 –

+0

@AnsgarWiechers我想使用一个.vbs脚本,而不是触摸任何文件夹权限。有没有办法做到这一点? 在此先感谢 – nicochulo

+0

*“我想用这一个.vbs脚本,而不是做” *不,你不会。相信我。 –

你可以尝试这样的:

myfolder = "C:\temp" 
Set sh = CreateObject("shell.application") 
For Each w In sh.Windows 
    If w.document.folder.self.Path = myfolder Then w.Quit 
Next 

这里是一个完整的例子关闭您的临时文件夹:如果你想拒绝访问的文件夹做直路

Option Explicit 
If AppPrevInstance() Then 
    MsgBox "There is an existing proceeding !" & VbCrLF &_ 
    CommandLineLike(WScript.ScriptName),VbExclamation,"There is an existing proceeding !"  
    WScript.Quit 
Else 
Dim MyFolder,ws 
Set ws = CreateObject("wscript.shell") 
Myfolder = ws.ExpandEnvironmentStrings("%temp%") 
Do 
    Call CloseThis(MyFolder) 
    wscript.sleep 1000 
Loop 
End If 
'********************************************************************************************* 
Sub CloseThis(Folder) 
Dim sh,w 
Set sh = CreateObject("shell.application") 
For Each w In sh.Windows 
    If w.document.folder.self.Path = Folder Then w.Quit 
Next 
End Sub 
'********************************************************************************************* 
Function AppPrevInstance() 
    With GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2") 
     With .ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine LIKE " & CommandLineLike(WScript.ScriptFullName) & _ 
      " AND CommandLine LIKE '%WScript%' OR CommandLine LIKE '%cscript%'") 
      AppPrevInstance = (.Count > 1) 
     End With 
    End With 
End Function  
'********************************************************************************************* 
Function CommandLineLike(ProcessPath) 
    ProcessPath = Replace(ProcessPath, "\", "\\") 
    CommandLineLike = "'%" & ProcessPath & "%'" 
End Function 
'********************************************************************************************* 
+0

谢谢!但我有两个问题:第一:第一个代码是否必须与第二个代码一起使用?在第一个代码中,我只需将整个路径粘贴到我的文件夹“myfolder”中? 预先感谢 – nicochulo

+0

第一个代码被称为在第二代码子例程。而刚刚替换变量'myfolder'到你 – Hackoo

+0

我只是尝试这样的代码,以及,更具体,我想在一个循环中的第chunck和它的作品奇妙 – nicochulo