Войти

Показать полную графическую версию : Не хватает прав для выполнения objFile.Attributes


csp
24-04-2015, 01:53
как используя wmi сбросить аттрибуты?

часть кода где уже нашло файл

For Each objFile In colFiles
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFile.Attributes = 0
Next

и вот objFile.Attributes = 0 выдает что нету прав. Я уверен что вызов shell.run с attrib -r -s -h сделает дело но к сожалению не знаю как юзнуть здесь

надо чтото типа


Set objShell = CreateObject("Wscript.Shell")
strCommand = "attrib -r -s -h objFile"

Set objExec = objShell.Exec(strCommand)

Do Until objExec.Status
Wscript.Sleep 250
Loop

Wscript.Echo objExec.StdOut.ReadAll()

как раскрыть objFile в путь до файла?

Iska
24-04-2015, 12:02
csp, если нет прав на смену атрибутов — нет разницы, какой из методов использовать.

часть кода где уже нашло файл »
Покажите весь Ваш код.

csp
24-04-2015, 14:46
а нет вру, снимает аттрибуты но почему то ошибку выдает, щас минуту перепроверю

ага. вот такой код - работает без проблем

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\Users\HP\Desktop\activate_prog.dll")

objFile.Attributes = 0


а вот такой

strComputer = "."

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

Set colFiles = objWMIService.ExecQuery _
("Select * From CIM_DataFile Where Drive = 'C:' AND FileName = 'activate_prog' AND Extension = 'dll'")

For Each objFile In colFiles
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFile.Attributes = 0
objFSO.CopyFile "C:\Users\HP\Desktop\2.dll", objFile
Next

выдает ошибку

http://s009.radikal.ru/i309/1504/36/e1c988529152.jpg

соответственно я почему то подумал на права, но здесь причина в моей кривости скорее всего.

Iska
24-04-2015, 15:19
а вот такой … выдает ошибку »
Естественно. Потому что во втором коде «objFile» — это не объект File библиотеки «Scripting.FileSystemObject», а объект «CIM_DataFile» (CIM_DataFile class (Windows) - MSDN - Microsoft (https://msdn.microsoft.com/en-us/library/aa387236%28v=vs.85%29.aspx)) из пространства имён Wbem, у которого атрибуты представляются отдельными булевыми свойствами (Archive, Compressed, Hidden и т.д.), к тому же — только для чтения.

csp
25-04-2015, 12:07
потратил еще пару часов на гугл, и даже нашел ету тему в поиске ... мне нужно скопировать файл, даже если на конечном файле стоит только чтение и скрытый.


objFile.Copy("C:\Users\HP\Desktop\2.dll")


такое не перезапишет,

CIM_DataFile has no concept of a "working directory." Second, the Copy() method cannot be used to overwrite an existing file

а альтернатив я не знаю,

object.CopyFile "C:\Users\HP\Desktop\2.dll", objFile, true

тоже не катит здесь как метод.




© OSzone.net 2001-2012