Windows script host разрешение отклонено код 800a0046

Ошибка выполнения Microsoft VBScript 800a0046: разрешение отклонено может возникать при запуске скрипта на языке VBScript, если у пользователя отсутствуют необходимые разрешения на выполнение скрипта. Эта ошибка может возникнуть, когда скрипт пытается доступиться к файлу, папке или реестру, на которые у пользователя нет необходимых прав доступа.

Чтобы исправить ошибку выполнения Microsoft VBScript 800a0046: разрешение отклонено, необходимо предоставить пользователю необходимые разрешения для выполнения скрипта. В зависимости от конкретной ситуации, решение может включать в себя изменение прав доступа к файлам или папкам, изменение настроек безопасности, запуск скрипта с правами администратора или обновление программного обеспечения.

Если ошибка возникает при попытке доступа к файлу или папке, следует убедиться, что у пользователя есть необходимые права доступа к этим объектам. При необходимости можно изменить права доступа, предоставив пользователю полный доступ или разрешив определенные операции.

Если ошибка связана с доступом к реестру, можно попробовать запустить скрипт с правами администратора. Для этого нужно щелкнуть правой кнопкой мыши на файле скрипта и выбрать пункт «Запуск от имени администратора». Это может позволить скрипту получить доступ к необходимым реестровым ключам и выполнить требуемые операции.

Обратите внимание: перед внесением изменений в настройки безопасности, файлы или реестр, рекомендуется создать резервные копии или сохранить копии оригинальных файлов и настроек. Это позволит восстановить данные в случае возникновения проблем.

Содержание

  1. Причины возникновения ошибки выполнения Microsoft VBScript 800a0046: разрешение отклонено
  2. Ограничения доступа к файлам и папкам
  3. Неправильные настройки безопасности
  4. Конфликт с антивирусным программным обеспечением
  5. Проблемы с правами доступа к реестру
  6. Конфликт с другими приложениями или скриптами

Причины возникновения ошибки выполнения Microsoft VBScript 800a0046: разрешение отклонено

Ошибки выполнения виртуального языка VBScript могут возникать по разным причинам, одной из которых является ошибка с кодом 800a0046: разрешение отклонено. Данная ошибка указывает на то, что скрипт не имеет прав доступа к запрашиваемому файлу или папке.

Есть несколько потенциальных причин, по которым может возникать данная ошибка:

  1. Недостаточные права пользователя: Пользователю, запускающему скрипт, могут не хватать необходимых прав доступа для чтения или записи в требуемый файл или папку. Убедитесь, что пользователь имеет достаточные права доступа к запрашиваемому ресурсу.

  2. Заблокированный антивирусом или брандмауэром: Некоторые антивирусные программы или брандмауэры могут блокировать выполнение скриптов, которые пытаются получить доступ к файлам или папкам. Проверьте настройки антивирусной программы или брандмауэра и убедитесь, что скрипт не блокируется.

  3. Ошибка пути к файлу или папке: Если путь к файлу или папке в скрипте задан неверно или имеет неправильные разрешения доступа, то может возникать ошибка разрешение отклонено. Убедитесь, что путь к файлу или папке указан корректно и имеет соответствующие разрешения доступа.

  4. Файл или папка заблокированы другим процессом: Если файл или папка, к которым обращается скрипт, заблокированы другим процессом или приложением, то скрипт может не получить доступ к ним и вызвать ошибку разрешение отклонено. Убедитесь, что файл или папка не открыты или заблокированы другими процессами.

При обнаружении ошибки выполнения Microsoft VBScript 800a0046: разрешение отклонено, рекомендуется проверить вышеперечисленные причины и выполнить соответствующие действия для устранения проблемы. Если же ошибка продолжает возникать, необходимо обратиться к администратору системы или специалисту по настройке окружения выполнения скриптов.

Ограничения доступа к файлам и папкам

При работе с файлами и папками на компьютере может возникнуть ситуация, когда программа или скрипт не может получить доступ к определенным файлам или папкам из-за ограничений доступа. Одной из таких ошибок является ошибка выполнения Microsoft VBScript 800a0046 с сообщением «разрешение отклонено».

Ошибка «разрешение отклонено» указывает на то, что у пользователя или программы, запускающей скрипт, нет необходимых разрешений для доступа к указанным файлам или папкам. Это может быть вызвано ограничениями операционной системы, наличием учетной записи с недостаточными правами доступа или неправильной настройкой разрешений для конкретного файла или папки.

Для решения проблемы с ограничениями доступа к файлам и папкам, следует выполнить следующие шаги:

  1. Проверить учетную запись пользователя: Убедитесь, что учетная запись пользователя, запускающего скрипт или программу, имеет достаточные права доступа для чтения или записи файлов и папок, к которым обращается скрипт. Если учетная запись имеет ограниченные права доступа, необходимо получить соответствующие разрешения или использовать другую учетную запись с необходимыми правами.
  2. Проверить разрешения на файлы и папки: Проверьте разрешения на файлы и папки, к которым обращается скрипт. Убедитесь, что учетная запись пользователя или группа пользователей имеют необходимые разрешения для чтения или записи этих файлов и папок. Если разрешения неправильно настроены, отредактируйте их, чтобы предоставить необходимые права доступа.
  3. Проверить настройки безопасности операционной системы: Некоторые операционные системы имеют дополнительные настройки безопасности, которые могут ограничивать доступ к файлам и папкам. Проверьте эти настройки и убедитесь, что они не блокируют доступ к файлам и папкам, с которыми работает скрипт.
  4. Связаться с администратором системы: Если у вас нет достаточных прав доступа для редактирования разрешений или настройки безопасности операционной системы, свяжитесь с администратором системы или ответственным за безопасность сети лицом. Они смогут помочь вам получить необходимые разрешения или внести необходимые изменения в настройки безопасности.

При проведении этих шагов вы сможете исправить ошибку выполнения Microsoft VBScript 800a0046 и разрешить ограничения доступа к файлам и папкам. Учитывайте, что внесение изменений в разрешения и настройки безопасности может потребовать административных прав или помощи от администратора системы.

Неправильные настройки безопасности

Одной из причин появления ошибки выполнения Microsoft VBScript 800a0046: разрешение отклонено может быть неправильная настройка безопасности на компьютере или в операционной системе. Некоторые настройки безопасности могут блокировать выполнение сценариев VBScript, что может привести к возникновению данной ошибки.

Для исправления ошибки выполнения Microsoft VBScript 800a0046: разрешение отклонено связанной с неправильными настройками безопасности, можно предпринять следующие шаги:

  1. Проверить настройки безопасности в браузере:
    • Откройте настройки безопасности в вашем браузере.
    • Убедитесь, что выполнение сценариев VBScript разрешено.
    • Если выполнение сценариев VBScript было запрещено, измените настройки, чтобы разрешить его выполнение.
  2. Проверить настройки безопасности в операционной системе:
    • Откройте панель управления операционной системы.
    • Перейдите в раздел «Настройки безопасности» или «Безопасность и обновление».
    • Убедитесь, что выполнение сценариев VBScript разрешено или установите соответствующие права.
    • Если выполнение сценариев VBScript было запрещено, измените настройки безопасности, чтобы разрешить его выполнение.
  3. Обновить или переустановить Microsoft VBScript:
    • Проверьте, что у вас установлена последняя версия Microsoft VBScript.
    • Если у вас установлена устаревшая версия, обновите или переустановите Microsoft VBScript с официального сайта Microsoft.

В случае, если после применения вышеперечисленных действий ошибка выполнения Microsoft VBScript 800a0046: разрешение отклонено все еще появляется, рекомендуется обратиться за консультацией к специалисту или службе поддержки Microsoft.

Конфликт с антивирусным программным обеспечением

Часто пользователи сталкиваются с ошибкой выполнения Microsoft VBScript 800a0046, связанной с разрешением отклонено. Одной из причин возникновения этой ошибки может быть конфликт с антивирусным программным обеспечением.

Антивирусные программы могут блокировать доступ пользователя к определенным файлам или папкам, что может привести к ошибке выполнения скрипта. Это мера безопасности, предназначенная для защиты от потенциально вредоносных скриптов.

Если вы столкнулись с ошибкой выполнения Microsoft VBScript 800a0046 и у вас установлено антивирусное программное обеспечение, рекомендуется принять следующие меры для решения проблемы:

  • Проверьте настройки антивирусной программы и убедитесь, что она не блокирует доступ к нужным файлам или папкам.
  • Добавьте исполняемый файл или папку, в которой находится скрипт, в список доверенных программ или исключений антивирусной программы.
  • Если доступ к файлам или папкам все равно блокируется, временно отключите антивирусное программное обеспечение и попробуйте выполнить скрипт еще раз. Учтите, что при отключении антивируса вы ставите свою систему под угрозу, поэтому делайте это только если необходимо и на срок, достаточный для выполнения скрипта.

После принятия соответствующих мер у вас должна быть возможность исправить ошибку выполнения Microsoft VBScript 800a0046 и успешно выполнить нужный скрипт. Если проблема не решается, рекомендуется обратиться к службе поддержки антивирусного программного обеспечения для получения помощи.

Проблемы с правами доступа к реестру

Возникновение ошибки выполнения Microsoft VBScript 800a0046 с сообщением «Ошибка в разрешении: доступ запрещен» может свидетельствовать о проблемах с правами доступа к реестру Windows. Реестр – это центральное хранилище настроек и конфигурации операционной системы, которые используются программами для получения и сохранения информации.

Когда скрипт или программа пытается получить доступ к реестру, система проверяет права доступа у текущего пользователя. Если у пользователя отсутствуют необходимые права, возникает ошибка выполнения. Это может происходить, например, если вы пытаетесь изменить системные настройки с учетной записи ограниченного пользователя или если учетная запись пользователя не имеет достаточных прав в системе.

Для решения проблемы с правами доступа к реестру можно предпринять следующие действия:

  1. Проверьте права доступа пользователя: убедитесь, что учетная запись, с которой вы пытаетесь выполнить скрипт или программу, имеет необходимые права доступа к реестру. Если это учетная запись ограниченного пользователя, попробуйте выполнить скрипт от имени администратора или пользователя с административными правами.
  2. Установите правильные разрешения: если учетная запись имеет административные права, но все равно возникает ошибка выполнения, возможно, необходимо изменить разрешения на соответствующие ключи реестра. Для этого можно воспользоваться инструментом Редактора реестра, открыв его через меню Пуск или выполнить команду regedit в командной строке. Следует быть осторожным при изменении реестра, так как неправильное изменение может негативно повлиять на работу системы.
  3. Обратитесь к системному администратору: если вы не знаете, как правильно установить разрешения для реестра или не имеете достаточных прав, обратитесь к системному администратору или ИТ-специалисту для помощи и консультации.

Решив проблемы с правами доступа к реестру, вы сможете успешно выполнить скрипт или программу, использующую информацию из реестра, и избежать ошибки выполнения Microsoft VBScript 800a0046.

Конфликт с другими приложениями или скриптами

Ошибка выполнения Microsoft VBScript 800a0046: разрешение отклонено может возникать в ситуациях, когда скрипт или приложение, которые вы пытаетесь запустить, создают конфликт с другими приложениями или скриптами на вашем компьютере. Это может быть вызвано различными факторами, включая:

  • Настройки безопасности операционной системы
  • Конфликтующие разрешения
  • Неправильная настройка или установка другого приложения или скрипта

Чтобы исправить эту ошибку, вам могут потребоваться следующие действия:

  1. Убедитесь, что у вас есть достаточные разрешения для выполнения скрипта или приложения. Если у вас есть доступ к учетной записи администратора, попробуйте запустить скрипт или приложение с правами администратора.
  2. Проверьте настройки безопасности операционной системы. Убедитесь, что скрипту или приложению разрешено запускаться и выполнять операции, которые оно требует.
  3. Проверьте, есть ли конфликтующие разрешения с другими приложениями или скриптами. Возможно, приложение или скрипт, который вы пытаетесь запустить, требует доступа к определенным ресурсам, которые уже заняты другими процессами.
  4. Проверьте правильность настройки или установки других приложений или скриптов на вашем компьютере. Возможно, одно из них вызывает конфликт или блокирует выполнение требуемого скрипта или приложения.

Если после выполнения указанных действий проблема не устраняется, обратитесь за помощью к администратору системы или к разработчику скрипта или приложения. Они смогут более детально изучить вашу проблему и предложить решение, соответствующее вашей конкретной ситуации.

The Microsoft VBScript runtime error: Permission denied 800A0046, may faced while trying to install or uninstall a program or driver on your computer. The error 800A0046 is commonly caused because you ‘ll try to install a program on your computer without having administrative privileges or because you have enabled the User Account Control (UAC) on Windows 7 or Vista based computers. 

Permission denied 800A0046

In most cases the VBScript runtime error 800A0046, is occurred whenever you try to install the «Windows Installer Clean Up» utility, in order to remove a program from the system that you cannot uninstall by using the normal way (Programs and features).

This article contains two(2) methods to fix the «Permission denied 800A0046» Windows Script Host Error, on Windows 7 or Vista.

How to bypass the Windows Script Host «Permission Denied – Code 800A0046».

Before applying the methods below to resolve the VBScript Runtime 800A0046 error, first make sure that you have logged on as Administrator on your system,

Method 1: DISABLE User Account Control (UAC).

In order to disable the UAC (User Account Control):

1. Go to Start > Control Panel.
2. Open User Accounts.
3. Click at Change User Account Control settings.

VBScript Runtime error 800A0046

4, Move the slider on the left to Never notify and click OK.
5. Restart your computer.

disable uac - user account control

6. After restart, install (or uninstall) the program that caused the 800A0046 error.

Method 2: RUN the Installer (Setup.exe) as Administrator

In order to install a program as administrator:

1. Right click at the program (installer) that you ‘re trying to install and click Run as Administrator.

run as adminsitrator

That’s all folks! Did it work for you?

Please leave a comment in the comment section below or even better: like and share this blog post in the social networks to help spread the word about this solution.

If this article was useful for you, please consider supporting us by making a donation. Even $1 can a make a huge difference for us.

  • Remove From My Forums
  • Question

  • I’m so close to get my script to work with a user, but I need your help.
    I have a Terminal Server 2003 with policy restrictions. My users can’t even see how much megabytes they have in use. So I created the following script. It runs perfectly with an administrator account:


    Dim oFS, oFolder
    Dim total
    Dim message
    set oFS = WScript.CreateObject(«Scripting.FileSystemObject»)
    set oFolder1 = oFS.GetFolder(«\\server\share$»)
    set oFolder2 = oFS.GetFolder(«\\server\share1$»)
    set oFolder3 = oFS.GetFolder(«\\server\share2$»)
    Wscript.Sleep 300
    total = oFolder1.Size + oFolder2.Size + oFolder3.Size
    message=MsgBox («Size: » & vbTab & oFolder1.Size /1024\1024 & «MB» & vbTab & » Path: » & vbTab & oFolder1.Path & Chr(10) _
    & «Size: » & vbTab & oFolder2.Size /1024\1024 & «MB» & vbTab & » Path: » & vbTab & oFolder2.Path & Chr(10) _
    & «Size: » & vbTab & oFolder3.Size /1024\1024 & «MB» & vbTab & » Path: » & vbTab & oFolder3.Path & Chr(10) _
    & «Total: » & vbTab & total /1024\1024 & «MB»,64,»megabytes in use»)

    The problem I’m facing is that I can’t distribute it to my users because when this script runs as an user I receive this error:
    Windows Script Host
    Script: pathandname.vbs
    Line: 9
    Char: 1
    Error: Permission denied
    Code: 800A0046
    Source: Microsoft VBScript runtime error

    I’ve checked the users permission on the server\share’s and they have Full Control.
    Also on the ACL on the script the user has Full Control.

    What else can I check?
    Is there a setting in some GPO that denies users to run a .vbs?

    Please let me know when you need more information to solve this.

    Cheers,
    Yuri

Answers

  • Are you sure the users have permissions to ALL files and directories on the shares?
    If there is as much as one file or folder to which the user hasn’t got at least «list contents» permission the script will fail with the above message.

    If you check the properties of the root of the share from explorer, first as an administrator and then as a user. Does it show the same amount of files/folders and the same size?
    A difference here would indicate that the user doesn’t have permissions to everything.

    • Marked as answer by

      Tuesday, September 1, 2009 9:14 AM

I made a script that copying a file to a certain location.
I add the .vbs to taskschd.msc scheduled for make a .pst backup
but I get error message

Line: 91
Char: 7
Error: Permission denied
Code: 800A0046
Source: Microsoft VBScript runtime error

<pre>



'Set the amount of pst-files you want to copy. Start counting at 0!
ReDim pst(1)

'Define the location of each pst-file to backup. Increase the counter!
pst(0) = "C:\Users\daniel.elmnas.TT\Documents\Outlook Files\[email protected]"
pst(1) = "C:\Users\daniel.elmnas.TT\Documents\Outlook Files\de.pst"

'Define your backup location
BackupPath = "\\ttad-1\Gemensam\Outlook_Backup\Daniel Elmnäs"

'Keep old backups? TRUE/FALSE
KeepHistory = FALSE

'Maximum time in milliseconds for Outlook to close on its own
delay = 30000 'It is not recommended to set this below 8000

'Start Outlook again afterwards? TRUE/FALSE
start = TRUE

'===================STOP MODIFY====================================

'Close Outlook
Call CloseOutlook(delay)

'Outlook is closed, so we can start the backup
Call BackupPST(pst, BackupPath, KeepHistory)

'Open Outlook again when desired.
If start = TRUE Then
  Call OpenOutlook()
End If


Sub CloseOutlook(delay)
  strComputer = "."
  Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

  'If Outlook is running, let it quit on its own.
  For Each Process in objWMIService.InstancesOf("Win32_Process")
    If StrComp(Process.Name,"OUTLOOK.EXE",vbTextCompare) = 0 Then
      Set objOutlook = CreateObject("Outlook.Application")
      objOutlook.Quit
      WScript.Sleep delay
      Exit For
    End If
  Next

  'Make sure Outlook is closed and otherwise force it.
  Set colProcessList = objWMIService.ExecQuery _
  ("Select * from Win32_Process Where Name = 'Outlook.exe'")
  For Each objProcess in colProcessList
    objProcess.Terminate()
  Next
  Set objWMIService = Nothing
  Set objOutlook = Nothing
  set colProcessList = Nothing
End Sub


Sub BackupPST(pst, BackupPath, KeepHistory)
  Set fso = CreateObject("Scripting.FileSystemObject")

  If KeepHistory = True Then
    ArchiveFolder = Year(Now) & "-" & Month(Now) & "-" & Day(Now)
    BackupPath = BackupPath & ArchiveFolder & "\"
  End If

  If fso.FolderExists(BackupPath) = False Then
    fso.CreateFolder BackupPath
  End If

  For Each pstPath in pst
    If fso.FileExists(pstPath) Then
      fso.CopyFile pstPath, BackupPath, True
    End If
  Next
  Set fso = Nothing
End Sub


Sub OpenOutlook()
  Set objShell = CreateObject("WScript.Shell")
  objShell.Run "Outlook.exe"
End Sub


</pre>

Could someone help me to solve this?

Thank you in advance

asked Apr 24, 2015 at 12:11

XsiSecOfficial's user avatar

3

Seems like you schedule the script.
You need to start the task with a user that executes the script which has rights on the PST file, as well as on the path where you store the backup. Running it with the system account won’t be enough.

There are better ways to backup PST files also, I use a Ruby script to synchronise a local copy with a backup copy, is runs on PST’s more than 10GB big without problem, might be a problem if you would do it with a copy like this.

You need to backup the copy on a backup medium also because when the PST has errors (and all big PST have) you copy the errors to the backup and could lose both.

Also, you do the following

BackupPath = "\\ttad-1\Gemensam\Outlook_Backup\Daniel Elmnäs"
...
BackupPath = BackupPath & ArchiveFolder & "\"

Where is the \ between the two first variables ?

answered Oct 14, 2015 at 19:43

peter's user avatar

peterpeter

41.8k5 gold badges64 silver badges108 bronze badges

EDITED: Change the permissions of the folder.

  1. In windows explorer, navigate to the folder where the PST file is located.
  2. In the left pane of windows explorer, right click on the folder where the PST file is located, select «Properties».
  3. Select the «Security» tab
  4. Click the button «Edit» to change permissions.
  5. Click «Add»
  6. In the object names to select box, enter «everyone» (no quotes).
  7. Click «Check Names», everyone should become capitalized and underlined.
  8. Click «Ok»
  9. Select «Everyone» from the list of Groups or user names.
  10. In the «Permissions for Everyone» list, make sure «Read & Execute, List folder contents and Read, in the allow column are checked, click «Apply»
  11. Click Ok.

NOTE: By doing this, anyone who has access to this computer can access the folder. You might consider only adding your login to the computer to the list of Groups or usernames instead of Everyone. You may have to repeat the above steps on the PST file(s) in question.

Original Post:

I ran the script here, testing for various issues and it ran without problems. At this point I believe the issue is rights and permissions to either the source or destination folder (or the files you are backing up). By default, the user’s themselves don’t have access to Outlooks data files. You would need to add «read» permissions to the files in question (PST,OST, and so on) or the full folder.
In reality, just backing up the PST files isn’t enough to restore an Outlook configuration; you would need all of the files.
You can Try this:

'===================================================================
'Description: VBS script to backup your pst-files.
'
'Comment: Before executing the vbs-file, set the location of outlook
'         folder you want to backup and
'         the backup location (this can also be a network path).
'         See the URL below for more configuration instructions and
'         how to create a Scheduled Task for it.
'
' Original author : Robert Sparnaaij
' Modified:  Fred Kerber
' version: 1.1
' website: http://www.howto-outlook.com/downloads/backupscript.htm
' Changes:
'   Changed var types; changed to backup full folder and not just pst files.
'===================================================================
'===================BEGIN MODIFY====================================



'Define the folder location of Outlook's data files.
sOutlookDataPath = "C:\Users\FKerber.CORP\AppData\Local\Microsoft\Outlook\"

'Define your backup location
sBackupPath = "E:\Outlook Backup\"

'Keep old backups? TRUE/FALSE
bKeepHistory = TRUE

'Maximum time in milliseconds for Outlook to close on its own
iDelay = 30000 'It is not recommended to set this below 8000

'Start Outlook again afterwards? TRUE/FALSE
bStart = True

'===================STOP MODIFY====================================
'Close Outlook
Call CloseOutlook(iDelay)

'Outlook is closed, so we can start the backup
Call BackupOutlook(sOutlookDataPath, sBackupPath, bKeepHistory)

'Open Outlook again when desired.
If bStart = TRUE Then
  Call OpenOutlook()
End If

Sub CloseOutlook(iDelay)
  Set objWMIService = GetObject("winmgmts:" &_
   {impersonationLevel= impersonate}!\\.\root\cimv2")

  'If Outlook is running, let it quit on its own.
   For Each oProcess in objWMIService.InstancesOf("Win32_Process")
     If StrComp(oProcess.Name,"OUTLOOK.EXE",vbTextCompare) = 0 Then
       Set objOutlook = CreateObject("Outlook.Application")
       objOutlook.Quit
       WScript.Sleep delay
       Exit For
     End If
   Next

  'Make sure Outlook is closed and otherwise force it.
  Set colProcessList = objWMIService.ExecQuery _
  ("Select * from Win32_Process Where Name = 'Outlook.exe'")
  For Each objProcess in colProcessList
    objProcess.Terminate()
  Next
  Set objWMIService = Nothing
  Set objOutlook = Nothing
  Set colProcessList = Nothing
End Sub

Sub BackupOutlook(sOutlook, sBackupPath, bKeepHistory)
  Set ofso = CreateObject("Scripting.FileSystemObject")

  If bKeepHistory = True Then
    sArchiveFolder = Year(Now) & "-" & Month(Now) & "-" & Day(Now)
    sBackupPath = sBackupPath & sArchiveFolder & "\"
  Else
    For Each oFile In ofso.GetFolder(sBackupPath).Files
      ofso.DeleteFile oFile.Path, True
    Next
  End If

  If ofso.FolderExists(sBackupPath) = False Then
    ofso.CreateFolder sBackupPath
  End If

  For Each oFile In ofso.GetFolder(sOutlook).Files
    If ofso.FileExists(oFile.Path) Then
      ofso.CopyFile oFile.Path, sBackupPath, True
    End If
  Next
  Set ofso = Nothing
End Sub

Sub OpenOutlook()
  Set objShell = CreateObject("WScript.Shell")
  objShell.Run "Outlook.exe"
End Sub

answered Oct 14, 2015 at 18:29

Fred Kerber's user avatar

Fred KerberFred Kerber

1554 silver badges13 bronze badges

0

I had a similar problem trying to delete files with VBS. I assume that as with my case: The source of the problem is that the script is trying to perform some operation on a file or folder that has a Read-only Attribute. To solve this manually you could left click -> properties -> unclick the Read-Only Attribute then the file/folder should be copied by the script. To solve the problem with VBS: I make the assumption that file/folder is set to Read-Only because there is a programme currently using them.

One: we can just skip files/folders set to read-only this time and hope to get them next time the script runs. For this we first check if file/folder is read-only (I got this from here: https://social.technet.microsoft.com/Forums/ie/en-US/7382d452-1ef9-404a-8874-48d38fcfe911/vbscript-verify-if-a-file-is-readonly?forum=ITCG), if not then we perform the copy operation.

  Sub BackupPST(pst, BackupPath, KeepHistory)
    '........
     For Each pstPath in pst
       If fso.FileExists(pstPath) Then
         If not (fso.GetFile(pstPath).Attributes AND 1) Then 'if item is not read-only
           fso.CopyFile pstPath, BackupPath, True
         End If
       End If
     Next
     Set fso = Nothing
   End SubSub

Two: At the very least this should prevent you from getting the error. But if the script never moves the files even after running a number of times then chances are that the files (you are trying to move) are always in read only and you should change Attribute of the file (you are trying to move) in your script before calling the copy function, see how to do that here: https://devblogs.microsoft.com/scripting/how-can-i-change-a-read-only-file-to-a-read-write-file/

answered Apr 5, 2022 at 8:59

Lazarus-CG's user avatar

The line the error formulates from is: Set newfolder = filesys.CreateFolder(Server.MapPath(newfolderpath)).

Here is the code below:

If Request.Form("add")= "true" then 

Dim prop, user, pwd, dir
prop    = ChkString(request.Form("Prop"))
user    = ChkString(request.Form("User"))
pswd    = ChkString(request.Form("Pswd"))
dir     = ChkString(request.Form("Dir"))

 Dim filesys, newfolder, newfolderpath
 newfolderpath = "/ppi/"& dir
 set filesys=CreateObject("Scripting.FileSystemObject")
 If filesys.FolderExists(Server.MapPath(newfolderpath)) = true Then
  Response.Write("<center><br><br><span class='bodybigred'>Sorry, this folder already exists.</span><br><br><span class='bodybig'><a href='javascript:history.go(-1)'>Please try again</a></span><br><br><br><br><br><br></center>")
 Else
   Set newfolder = filesys.CreateFolder(Server.MapPath(newfolderpath))
   SQL =    "INSERT INTO PPI " &_
            "   (Property_Name, Username, Passwd, PPI_Dir) " &_
            "VALUES ('" & prop & "','" & user & "','" & pswd & "','" & dir & "');"
   Conn.Execute SQL
   Conn.Close
   Set Conn = Nothing
   Set filesys = Nothing 
   Response.Redirect "ppi.asp?view=all&prop=" & prop & "&posted=true"
 End If
End If

  • Windows search стоит ли отключать
  • Windows script host ошибка разрешение отклонено
  • Windows scanner software windows 10
  • Windows search in all text files
  • Windows search что будет если отключить