2017-08-31 65 views
1

私は、特定のフォルダを開くたびにそのフォルダへのアクセスを拒否するVBScriptで簡単なプログラムを作成しようとしています。私はここでこのコードを多くのフォルダに使用していますが、なんらかの理由でC:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUpと動作しません。VBScriptで特定のフォルダを閉じる方法は?

.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 

そして、ここではあなたの一時フォルダを閉じるには、完全な例です:あなたはこのように試すことができ

+1

はによって正しい方法、それを行いますフォルダのアクセス許可を調整します。 –

+0

@AnsgarWiechers代わりに.vbsスクリプトを使用して、フォルダのアクセス権には触れずにしたい。それを行う方法はありますか? ありがとうございました – nicochulo

+0

* "代わりに.vbsスクリプトを使用して作りたい" *いいえ。私を信じて。 –

答えて

2

フォルダへのアクセスを拒否したい場合

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

ありがとう!私はそれについて2つの質問があります:最初:最初のコードは、2番目のコードと一緒に使用する必要がありますか?最初のコードでは、パス全体を "myfolder"のフォルダに貼り付けますか? ありがとうございます – nicochulo

+0

第1コードは第2コードでサブルーチンと呼ばれています。そして、変数myfolderをあなたのものに置き換えてください – Hackoo

+0

私はこのコードを試しました。具体的には、最初のチャンクをループで試してみました。素晴らしいマシンです。 – nicochulo

関連する問題