У меня есть ситуация, которая меня очень смущает. Простой код, который я использовал годами, терпит неудачу самым странным образом. У меня есть ощущение, что причина связана либо с антивирусным мусором, либо с GPO, но даже они, я видел, как они работали раньше по этому сценарию, но совсем не так, как я вижу это сейчас. Примечание. Этот код отлично работал у нескольких человек, пока один конечный пользователь не получил от ИТ новый ноутбук Surface якобы для лучшей совместимости с Teams и 365. ВСЕ пользователи (рабочие и нерабочие) используют Windows 10. .
Сценарий:
- Я использую Scripting.Filesystemobject
- установка переменной объекта (намерение Textstream), как fso.createtextfile
- Путь к файлу (имя), который я создаю, на самом деле является именем файла.vbs... В момент выполнения этой строки я успешно вижу файл vbs в папке
- Я использую Textstream.Write, чтобы поместить некоторый контент в файл.
- Затем я использую Textstream.Close (обычно на этом этапе вы получаете надежный, стабильный, пригодный для использования файл). Сразу после выполнения последней строки, Textstream.Close, файл ИСЧЕЗАЕТ из папки-ИСЧЕЗ.
Папка, в которую я пишу, такая же, как Пуск > Выполнить > %appdata% Я также пробовал это в папке «Документы» (Environ$(USERPROFILE) и \My Documents) и получаю тот же результат.
Я видел групповые политики и антивирусы, которые препятствуют запуску VBS, но это не мой случай — я тестировал с этим пользователем, и у нее не было проблем:
- Создание txt файла в любой из этих папок
- Создание вручную файла .vbs в любой из этих папок
- Даже ЗАПУСК полученного файла vbs в любой папке
Но почему-то, когда я программно создаю .VBS в коде, второй я закрываю текстовый поток, файл исчез из папки.
Любое понимание? Поиски в Интернете, которые я сделал, не содержали никакой информации об этом сценарии! Мне потребовалось бы 2 недели, чтобы открыть тикет и получить любую помощь от IT.
Это 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