1. LevRusakov 16 28.07.16 14:15 Сейчас в теме

Получить доменного владельца файла в Windows 7

Коллеги, подскажите, кто и как реализовывал получение свойства файла - владелец (учетная запись в домене) в Windows?

Нашел рабочий вариант в C#
string user = System.IO.File.GetAccessControl(path).GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();
Найденные решения
3. LevRusakov 16 09.01.17 11:15 Сейчас в теме
Да, вернулся к теме и всё просто.

	Скрипт = Новый COMОбъект("ADsSecurityUtility");
	
	Сообщить(Скрипт.GetSecurityDescriptor(ИмяФайла, 1, 1).owner);

Но тут исключение надо отработать в случае, например, отсутствия файла.
Остальные ответы
Избранное Подписка Сортировка: Древо
2. v3rter 28.07.16 14:56 Сейчас в теме
Есть VB скрипты https://blogs.technet.microsoft.com/heyscriptingguy/2004/10/07/how-can-i-determine-the-owner-of-a-file/
для файла
On Error Resume Next
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
      & “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)
strFile = “C:\Scripts\My_script.vbs”
Set colItems = objWMIService.ExecQuery _
    (“ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='” & strFile & “‘}” _
        & ” WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner”)
For Each objItem in colItems
    Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo objItem.AccountName
Next
Показать

для папки
On Error Resume Next
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
      & “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)
strFile = “C:\Scripts”
Set colItems = objWMIService.ExecQuery _
    (“ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='” & strFile & “‘}” _
        & ” WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner”)
For Each objItem in colItems
    Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo objItem.AccountName
Next
Показать


В 1С подключение будет выглядеть как-то так:
ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");


Альтернативный вариант - разбирать результаты команд типа
DIR /Q "c:\windows\system32\notepad.exe"

или более удобной для разбора
wmic datafile where name='c:\\windows\\system32\\notepad.exe'


П.С. Возможно, кавычки в скопипащеных VB-скриптах придется заменить на стандартные.
LevRusakov; +1 Ответить
3. LevRusakov 16 09.01.17 11:15 Сейчас в теме
Да, вернулся к теме и всё просто.

	Скрипт = Новый COMОбъект("ADsSecurityUtility");
	
	Сообщить(Скрипт.GetSecurityDescriptor(ИмяФайла, 1, 1).owner);

Но тут исключение надо отработать в случае, например, отсутствия файла.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 110 000 руб. до 120 000 руб.
Полный день

Аналитик 1С
Санкт-Петербург
зарплата от 80 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день

Программист 1С
Волгоград
зарплата от 45 000 руб. до 90 000 руб.
Полный день