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

1. Лев Русаков (LevRusakov) 17 28.07.16 14:15 Сейчас в теме
Коллеги, подскажите, кто и как реализовывал получение свойства файла - владелец (учетная запись в домене) в Windows?

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

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

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