Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Удалить корявые ассоциации у всех юзеров (http://forum.oszone.net/showthread.php?t=336314)

bredych 21-08-2018 11:02 2827695

Удалить корявые ассоциации у всех юзеров
 
вопрос возник, к которому не особо представляю, как подойти:

есть куча машин, на каждой от одного до 3 десятков юзеракков. Юзеры по дури (не все, но достаточно) ассоциировали тип файла со всякой хренью. С акроридером, с вордом, медиаплейером, 7зипом, - у кого на что хватило фантазии. Я пробовал насильно пихать в классы стандартное
HKEY\classes\.тип
@="кем считать"
+ \software\microsoft\windows nt\current version\extensions
"тип"="C:\\windows\\прога /ключ"
и т.д.

но в результате под админом всё ок, а под юзерскими акками - по-прежнему. Я сравнил реестры до и после, увидел выбор юзеров в ветках
hkey_users\S-1-5-21-#################\software\classes\.тип
@="тип_auto_file"
hkey_users\S-1-5-21-#################\classes\.тип
@="тип_auto_file"
hkey_users\S-1-5-21-#################\software\microsoft\windows\current version\FileExts\.тип\UserChoice
"hash"="#######"
"ProgId"="Applications\\Acrord32.exe"


Задача - удалить выбор юзера. У всех. (как понимаю, это заставить открывать по дефолту указанным в классах? И не придется юзерам прописывать отдельно их "выбор"? )

Я для навязывания ассоциации использовал тупо рег-файл, который psexec-ом удалённо исполнял. Но в рег-файлах вроде регулярные выражения не используются?
Как тогда?
Некий батник, который спрашивает на машине всех юзеров, и подставляет по списку их ИД как переменную в предлагаемые значения реестра? Сначала цикл списка машин, потом создание списка юзеров и цикл юзеров?
Или это можно организовать как-то более простым способом, не удаляя гланды через прямую кишку колоноскопом?

Iska 21-08-2018 11:54 2827703

Цитата:

Цитата bredych
Юзеры … ассоциировали тип файла со всякой хренью. »

Какой именно тип? Как именно ассоциировали?

Цитата:

Цитата bredych
Я пробовал насильно пихать в классы стандартное
HKEY\classes\.тип
@="кем считать"
+ \software\microsoft\windows nt\current version\extensions
"тип"="C:\\windows\\прога /ключ"
и т.д.
но в результате под админом всё ок, а под юзерскими акками - по-прежнему. »

1. Раздела HKEY\classes не существует.
2. Есть раздел HKEY_CLASSES_ROOT, который собирается из раздела «на машину» HKEY_LOCAL_MACHINE\SOFTWARE\Classes и раздела «на пользователя» HKEY_CURRENT_USER\Software\Classes (на который, в реальности, отображается подраздел HKEY_USERS\<SID>_Classes), причём значения из последнего накладываются на значения из первого и перекрывают их (то есть, «пользовательские» настройки получают приоритет над «машинными»). Более полно и точно в статье Windows registry information for advanced users:
Цитата:

HKEY_CLASSES_ROOT

Is a subkey of HKEY_LOCAL_MACHINE\Software. The information that is stored here makes sure that the correct program opens when you open a file by using Windows Explorer. This key is sometimes abbreviated as "HKCR." Starting with Windows 2000, this information is stored under both the HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER keys. The HKEY_LOCAL_MACHINE\Software\Classes key contains default settings that can apply to all users on the local computer. The HKEY_CURRENT_USER\Software\Classes key contains settings that override the default settings and apply only to the interactive user. The HKEY_CLASSES_ROOT key provides a view of the registry that merges the information from these two sources. HKEY_CLASSES_ROOT also provides this merged view for programs that are designed for earlier versions of Windows. To change the settings for the interactive user, changes must be made under HKEY_CURRENT_USER\Software\Classes instead of under HKEY_CLASSES_ROOT. To change the default settings, changes must be made under HKEY_LOCAL_MACHINE\Software\Classes. If you write keys to a key under HKEY_CLASSES_ROOT, the system stores the information under HKEY_LOCAL_MACHINE\Software\Classes. If you write values to a key under HKEY_CLASSES_ROOT, and the key already exists under HKEY_CURRENT_USER\Software\Classes, the system will store the information there instead of under HKEY_LOCAL_MACHINE\Software\Classes.
Обратите особое внимание на два последних предложения, начинающихся одинаково с «If you write keys to a key under…» — это объясняет, что куда и в каком случае пишется, когда Вы, например, импортируете что-то в HKCR, а не напрямую в HKLM или в HKU.

Как удалить? Проще всего и надёжнее всего использовать групповую политику «на пользователя», и там либо логон-скриптом, либо предпочтениями. Если у Вас есть домен — всё делается в одном месте, в AD, если домена нет — придётся повозиться.

DJ Mogarych 21-08-2018 11:56 2827705

https://powershell.org/forums/topic/...n-please-help/

https://www.google.com/search?&q=pow...le+association

alpap 21-08-2018 18:33 2827781

bredych,
была у меня такая проблема в отделе бухгалтерии
поставил всем Universal Viewer, вызывается (вернее открывает) из контекстного меню файла по ПКМ, при желании можно соответствия на нее прописать для всех *, а потом regом или патчем восстановить буквально там пару особенных, хотя мне это и не понадобилось.

bredych 23-08-2018 10:28 2828094

Цитата:

Цитата Iska
и там либо логон-скриптом, либо предпочтениями. »

а напомните мне, в hklm\...\run записанное выполняется до логона, или после?
Я в том плане, если запихать рег куда-то и при логоне чтоб оно впиливалось текущему юзверю?
Чтоб не придумывать проверку на ИД юзеров и прочий гемор

alpap, установку стороннего софта "свыше" не одобряют, потому никаких костылей. Да и хочется хоть немного тупость свою в плане кодинга распинать )))

bredych 23-08-2018 10:45 2828099

Цитата:

Цитата DJ Mogarych
https://www.google.com/search?&q=pow...le+association »

эта ссылка выглядит интересней, но и то, требует выбор юзера..
А с первой
Цитата:

Цитата DJ Mogarych
https://powershell.org/forums/topic/...n-please-help/ »

- если поставить, как советуют, двойные кавычки перед строкой, то внутри параметры одинарными отделять? Команда поймёт?

Iska 23-08-2018 10:47 2828100

bredych, у Вас домен есть?

bredych 23-08-2018 15:09 2828143

Цитата:

Цитата Iska
у Вас домен есть? »

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

Iska 23-08-2018 15:37 2828145

Как это знакомо…
Цитата:

— Ты, Жора, жарь рыбу.
— Так рыбы ж нет.
— А ты всё равно жарь, жарь…

И вариант — Вы предоставляете им logon-скрипт, а уже они пусть его назначают в политику — тоже невозможен по тем же причинам?

bredych 23-08-2018 15:49 2828147

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

-ot reg -actn trustee -trst n1:voodoomsrlaptop\voodoomsr;ta:remtrst;w:dacl
object type reg, action trustee
а дальше предположения - ключ на полный доступ? или что это?
что значит n1:
далее, наверняка OU\account
но что за параметры дальше - не понимаю.
в самом setacl хелп микроскопический, в реге - тоже ничего такого..

DJ Mogarych 24-08-2018 16:38 2828335

Цитата:

Цитата bredych
в самом setacl хелп микроскопический »

Я бы так не сказал.

Цитата:

Trustee

-actn trustee -trst “n1:Trustee1[;n2:Trustee2];ta:TrusteeAction[;w:What]”
Removes Trustee1‘s ACEs, or
replaces Trustee1 within ACEs with Trustee2, or
copies ACEs from Trustee1 to Trustee2.
Multiple trustees may be specified like this: -actn trustee -trst "n1:UserA;n2:UserB;ta:cpytrst" -trst "n1:UserX;n2:UserY;ta:cpytrst"

or (new in SetACL 3.0)

-actn trustee -trst “csv:TrusteeInputFile;ta:TrusteeAction[;w:What]”
Removes ACEs with specified trustees, replaces trustees within ACEs or copies ACEs to different trustees. Input is read from TrusteeInputFile.
Цитата:

Цитата bredych
глобальные политики через домен я выставлять не имею права, этим занимается организация выше нашей. »

А эскалировать запрос им?
Вы админ на клиентских тачках в сети?

bredych 28-08-2018 11:05 2828907

спасибо, тут я пытался вызвать хелп в консоли )
Но теперь с правами не понимаю - если в этой строке
Код:

-ot reg -actn trustee -trst n1:voodoomsrlaptop\voodoomsr;ta:remtrst;w:dacl
trust action - remove trust, what - delete access control enrty - в чем смысл двукратного повторения? я логику синтаксиса не понимаю (
Равно как и action trustee -trst. Почему двукратно?

зы, да, разумеется локального админа имею.

ззы, тут подумал, что могз скис и с setacl не соображаю.. дисм через psexec сработает?
хотя нет, дисм импорт тоже надо конкретному юзеру, это надо список юзеров лепить, фигня. Только через назначение дефолтных и удаление юзерчойсов..
И единственное что пока придумывается, - это лист папки юзеров в hkey_users, и всем удалять юзерчойс по циклу..

Кстати, еще 2 вопроса нарисовалось в связи с:
1) почему даже из-под админского (для домена) акка
reg query \\machine_name\HKU
ругается "network path was not found"? Хоть машина онлайн, имя верное.
2) в ключе описаний софта
HKU\user_ID\Software\classes\Local settings\MuiCache\1cd\DA03165F
последние 2 раздела имеют, как понимаю, некое случайное значение. Оно у всех разное.
Туда ключи писать обязательно для корректной работы? или можно пропустить? И если пропускать нельзя, как наиболее кратким путем запросить и подставить это значение в путь?

bredych 30-08-2018 11:32 2829284

кстати, а setacl в параметрах допускает переменные?
типа, выражение
Код:

setacl.exe -on HKU\%%G\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ttt\UserChoice -ot reg -actn trustee -trst n1:%%i\adminAccount;ta:remtrst;w:dacl
будет понято правильно?
где %%i - переменная имени компа
или админский акк имеет по всему домену одинаковый сид и можно фиксированный сид вписывать?

апд, в принципе, доменный акк вкину..

Но пока мыслится корявый код:
- цикл перебора машин из списка, подключение к ним с админскими правами,
- через psexec запуск там локального батника, который
- рисует цикл перебора всех юзеров
- в эхо закидывает строки с setacl и reg delete, подставляя переменные SID юзера в пути, эхо перенаправляется в батник
- батник исполняется
- в HKLM\software\classes\ рег-файлом вписываются ассоциации.

по ощущению как-то слишком много костылей и код выходит сильно неуклюжий..

апд
хм. а зачем рег, если можно
FTYPE mytype=C:\windows\explorer.exe /idlist ^.adoc
Assoc .adoc=CompressedFolder


Время: 12:15.

Время: 12:15.
© OSzone.net 2001-