Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение владельца файла 
:(
    Опции темы
bugs
Дата 11.9.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 11.9.2008

Репутация: нет
Всего: 1



Привет, всем!
Подскажите, как можно изменить владельца файла или даже всей папки? smile

Добавлено через 1 минуту и 40 секунд
Совсем забыл!
Мне нужно на VBScript!!!!

PM MAIL   Вверх
Akina
Дата 11.9.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата

The Win32_LogicalFileOwner association WMI class relates the security settings of a file/directory and its owner.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bugs
Дата 12.9.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 11.9.2008

Репутация: нет
Всего: 1



Akina,  а как с помощью этой функции изменить владельца? подскажи пожалуйста !!
PM MAIL   Вверх
Akina
Дата 12.9.2008, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Это не функция, а WMI-класс. Посмотри примеры использования WMI-классов на VBS и делай по образу и подобию...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bugs
  Дата 12.9.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 11.9.2008

Репутация: нет
Всего: 1



для изменения владельца файла я нашел следующий код:
Код

' Global constants we must use with security descriptor
Private Const SECURITY_DESCRIPTOR_REVISION = 1
Private Const OWNER_SECURITY_INFORMATION = 1
' Access Token constants
Private Const TOKEN_ASSIGN_PRIMARY = &H1
Private Const TOKEN_DUPLICATE = &H2
Private Const TOKEN_IMPERSONATE = &H4
Private Const TOKEN_QUERY = &H8
Private Const TOKEN_QUERY_SOURCE = &H10
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_ADJUST_GROUPS = &H40
Private Const TOKEN_ADJUST_DEFAULT = &H80
'Private Const TOKEN_ALL_ACCESS = TOKEN_ASSIGN_PRIMARY + TOKEN_DUPLICATE + TOKEN_IMPERSONATE + TOKEN_QUERY + TOKEN_QUERY_SOURCE + TOKEN_ADJUST_PRIVILEGES + TOKEN_ADJUST_GROUPS + TOKEN_ADJUST_DEFAULT

Private Const ANYSIZE_ARRAY = 1

' Token Privileges constants
Private Const SE_RESTORE_NAME = "SeRestorePrivilege"
Private Const SE_PRIVILEGE_ENABLED = 2


Private Type ACL
  AclRevision As Byte
  Sbz1 As Byte
  AclSize As Integer
  AceCount As Integer
  Sbz2 As Integer
End Type

Private Type SECURITY_DESCRIPTOR
  Revision As Byte
  Sbz1 As Byte
  Control As Long
  Owner As Long
  Group As Long
  Sacl As ACL
  Dacl As ACL
End Type

' Token structures
Private Type LARGE_INTEGER
  lowpart As Long
  highpart As Long
End Type

Private Type LUID
  lowpart As Long
  highpart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
  pLuid As LUID
  Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
  PrivilegeCount As Long
  Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type

' Win32 API calls
Private Declare Function LookupAccountName Lib "advapi32.dll" _
     Alias "LookupAccountNameA" (ByVal lpSystemName As String, _
     ByVal lpAccountName As String, Sid As Byte, cbSid As Long, _
     ByVal ReferencedDomainName As String, _
     cbReferencedDomainName As Long, peUse As Integer) As Long
     
Private Declare Function InitializeSecurityDescriptor _
     Lib "advapi32.dll" (pSecurityDescriptor As SECURITY_DESCRIPTOR, _
     ByVal dwRevision As Long) As Long
     
Private Declare Function SetSecurityDescriptorOwner _
     Lib "advapi32.dll" (pSecurityDescriptor As SECURITY_DESCRIPTOR, _
     pOwner As Any, ByVal bOwnerDefaulted As Long) As Long
     
Private Declare Function SetFileSecurity Lib "advapi32.dll" _
     Alias "SetFileSecurityA" (ByVal lpFileName As String, _
     ByVal SecurityInformation As Long, _
     pSecurityDescriptor As SECURITY_DESCRIPTOR) As Long
     
Private Declare Function OpenProcessToken Lib "advapi32.dll" _
     (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
     TokenHandle As Long) As Long
     
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" _
     Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, _
     ByVal lpName As String, lpLuid As LUID) As Long
     
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" _
     (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _
     NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _
     ByVal PreviousState As Long, ByVal ReturnLength As Long) As Long
     
Private Declare Function CloseHandle Lib "kernel32" _
     (ByVal hObject As Long) As Long

Public Sub ChangeOwnerOfFile(FileName As String, _
     OwnerAccountName As String)

  ' variables for the LookupAccountName API Call
  Dim Sid(255) As Byte             ' Buffer for the SID
  Dim nBufferSize As Long          ' Length of SID Buffer
  Dim szDomainName As String * 255 ' Domain Name Buffer
  Dim nDomain As Long              ' Length of Domain Name buffer
  Dim peUse As Integer             ' SID type
  Dim Result As Long               ' Return value of Win32 API call
 
  ' variables for the InitializeSecurityDescriptor API Call
  Dim SecDesc As SECURITY_DESCRIPTOR
  Dim Revision As Long
 
  Enable_Privilege (SE_RESTORE_NAME)
 
  nBufferSize = 255
  nDomain = 255
 
  Result = LookupAccountName(vbNullString, OwnerAccountName, _
        Sid(0), nBufferSize, szDomainName, nDomain, peUse)
  If (Result = 0) Then
     MsgBox "LookupAccountName failed with error code " _
           & Err.LastDllError
     Exit Sub
  End If
 
  Result = InitializeSecurityDescriptor(SecDesc, _
        SECURITY_DESCRIPTOR_REVISION)
  If (Result = 0) Then
     MsgBox "InitializeSecurityDescriptor failed with error code " _
           & Err.LastDllError
     Exit Sub
  End If
 
  Result = SetSecurityDescriptorOwner(SecDesc, Sid(0), 0)
  If (Result = 0) Then
     MsgBox "SetSecurityDescriptorOwner failed with error code " _
           & Err.LastDllError
     Exit Sub
  End If
 
  Result = SetFileSecurity(FileName, OWNER_SECURITY_INFORMATION, _
        SecDesc)
  If (Result = 0) Then
     MsgBox "SetFileSecurity failed with error code " _
           & Err.LastDllError
     Exit Sub
  Else
     MsgBox "Owner of " & FileName & " changed to " _
           & OwnerAccountName
  End If
 
  Disable_Privilege (SE_RESTORE_NAME)
 
End Sub

Public Function Enable_Privilege(Privilege As String) As Boolean
  Enable_Privilege = ModifyState(Privilege, True)
End Function

Public Function Disable_Privilege(Privilege As String) As Boolean
  Disable_Privilege = ModifyState(Privilege, False)
End Function

Public Function ModifyState(Privilege As String, _
     Enable As Boolean) As Boolean
   
  Dim MyPrives As TOKEN_PRIVILEGES
  Dim PrivilegeId As LUID
  Dim ptrPriv As Long    ' Pointer to Privileges Structure
  Dim hToken As Long     ' Token Handle
  Dim Result As Long     ' Return Value
 
  Result = OpenProcessToken(GetCurrentProcess(), _
        TOKEN_ADJUST_PRIVILEGES, hToken)
  If (Result = 0) Then
     ModifyState = False
     MsgBox "OpenProcessToken failed with error code " _
           & Err.LastDllError
     Exit Function
  End If
 
  Result = LookupPrivilegeValue(vbNullString, Privilege, PrivilegeId)
  If (Result = 0) Then
     ModifyState = False
     MsgBox "LookupPrivilegeValue failed with error code " _
           & Err.LastDllError
     Exit Function
  End If
 
  MyPrives.Privileges(0).pLuid = PrivilegeId
  MyPrives.PrivilegeCount = 1
  If (Enable) Then
     MyPrives.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
  Else
     MyPrives.Privileges(0).Attributes = 0
  End If
   
  Result = AdjustTokenPrivileges(hToken, False, MyPrives, 0, 0, 0)
  If (Result = 0 Or Err.LastDllError <> 0) Then
     ModifyState = False
     MsgBox "AdjustTokenPrivileges failed with error code " _
           & Err.LastDllError
     Exit Function
  End If
 
  CloseHandle hToken
 
  ModifyState = True

End Function


Но он не запускается, выдаёт ошибку здесь:
Код

Private Type ACL

Почему???
 
PM MAIL   Вверх
Akina
Дата 12.9.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(bugs @  12.9.2008,  14:20 Найти цитируемый пост)
выдаёт ошибку здесь

Да блин! какую именно ошибку???

И потом - куда именно ты этот код затолкал?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bugs
Дата 12.9.2008, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 11.9.2008

Репутация: нет
Всего: 1



Строка: 22
Символ: 9
Ошибка: Предполагается наличие идентификатора
Код 800A03F2


А код я затолкал в файл *.vbs

Я что-то не так сделал??? smile 
PM MAIL   Вверх
Akina
Дата 12.9.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(bugs @  12.9.2008,  14:32 Найти цитируемый пост)
Я что-то не так сделал??? 

Конечно, это код для Visual Basic 6-й версии.
Предвидя следующий вопрос - нет, не портируется.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.