2017-08-31 45 views
1

我試圖讓使用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腳本,而不是做」 *不,你不會。相信我。 –

回答

2

你可以嘗試這樣的:

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

相關問題