问题描述
我的处境确实使我困惑。我使用多年的简单代码以最怪异的方式失败了。我感觉到原因与反病毒垃圾或GPO有关,但是即使是那些,我也曾经见过它们在这种情况下可以工作-但与我现在所看到的完全不同。 注意-该代码已经在多个用户中完美运行,直到一个最终用户从IT部门获得了新的Surface笔记本电脑为止,据称是为了更好地与Teams和365兼容。所有用户(工作或不工作)都在Windows 10上
。场景:
- 我正在使用Scripting.Filesystemobject
- 将对象变量(文本流意图)设置为fso.createtextfile
- 我正在创建的文件路径(名称)实际上是filename.vbs ...执行此行的那一刻,我可以在文件夹中成功看到vbs文件
- 我使用Textstream.Write在文件中放入一些内容
- 然后我使用Textstream.Close(通常,此时您会获得一个稳定,稳定,可用的文件)。 立即执行最后一行Textstream.Close,从文件夹GONE中删除文件DISAPPEARS。
我要写入的文件夹与“开始”>“运行”>%appdata% 我也在Documents文件夹(Environ $(“ USERPROFILE”)&“ \ My Documents”)中尝试了此操作,并获得了完全相同的结果
我已经看到了阻止VBS运行的组策略和AV内容,但这不是我的情况-我已经对该用户进行了测试,她没有问题:
- 在其中两个文件夹中创建一个txt文件
- 在其中两个文件夹中手动创建.vbs文件
- 甚至在任何一个文件夹中运行生成的vbs文件
但是以某种方式,当我以编程方式在代码中创建.VBS时,第二次关闭文本流时,文件已从文件夹中移出。
有见识吗?我进行的互联网搜索没有显示此情况下的所有信息!我需要2周的时间才能打开机票并获得I.T的任何帮助。
这是Excel VBA,但我高度怀疑问题与Excel或VBA无关...这是Windows scripting.filesystemobject的标准用法:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'initiate full backup vbs script:
Dim ts As Object,fso As Object,strScriptText As String,strScriptPath As String
'populate our variable with the full text of the script: found on QLoader in this range:
strScriptText = ThisWorkbook.Worksheets("QLoader").Range("z_BackupScriptText").Value
'replace the text "placeholder" with this workbook's actual full path/name:
strScriptText = Replace(strScriptText,"placeholder",ThisWorkbook.FullName)
'fire up FSO:
Set fso = CreateObject("scripting.filesystemobject")
'determine the new VBS file's path
strScriptPath = Environ("AppData") & "\Backup_" & Format(Now,"yymmddhhmmss") & ".vbs"
'create our textstream object:
Set ts = fso.createtextfile(strScriptPath)
'write our script into it
ts.write strScriptText
'save and close it
ts.Close 'RIGHT HERE THE FILE DISAPPEARS FROM THE FOLDER ***********
'GO:
Shell "wscript " & strScriptPath,vbNormalFocus
End Sub
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)