Войти

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


bredych
21-08-2018, 11:02
вопрос возник, к которому не особо представляю, как подойти:

есть куча машин, на каждой от одного до 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
Юзеры … ассоциировали тип файла со всякой хренью. »
Какой именно тип? Как именно ассоциировали?

Я пробовал насильно пихать в классы стандартное
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 (https://support.microsoft.com/en-ca/help/256986/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
https://powershell.org/forums/topic/set-default-file-association-please-help/

https://www.google.com/search?&q=powershell+set+default+file+association

alpap
21-08-2018, 18:33
bredych,
была у меня такая проблема в отделе бухгалтерии
поставил всем Universal Viewer (http://www.uvviewsoft.com/uviewer/), вызывается (вернее открывает) из контекстного меню файла по ПКМ, при желании можно соответствия на нее прописать для всех *, а потом regом или патчем восстановить буквально там пару особенных, хотя мне это и не понадобилось.

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

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

bredych
23-08-2018, 10:45
https://www.google.com/search?&q=pow...le+association »
эта (https://social.technet.microsoft.com/Forums/ie/en-US/3a7b4626-1662-4dc9-9a6a-b43af307fb7e/change-file-asociations-via-powershell?forum=winserverpowershell) ссылка выглядит интересней, но и то, требует выбор юзера..
А с первой https://powershell.org/forums/topic/...n-please-help/ »
- если поставить, как советуют, двойные кавычки перед строкой, то внутри параметры одинарными отделять? Команда поймёт?

Iska
23-08-2018, 10:47
bredych, у Вас домен есть?

bredych
23-08-2018, 15:09
у Вас домен есть? »
глобальные политики через домен я выставлять не имею права, этим занимается организация выше нашей.
потому даже не рассматриваю вариант

Iska
23-08-2018, 15:37
Как это знакомо…
— Ты, Жора, жарь рыбу.
— Так рыбы ж нет.
— А ты всё равно жарь, жарь…
И вариант — Вы предоставляете им logon-скрипт, а уже они пусть его назначают в политику — тоже невозможен по тем же причинам?

bredych
23-08-2018, 15:49
возможно, но столько бюрократии, что мне проще самому сделать и не трахать мозг ни себе ни им ради такой мелочи, нехай делают что-то более крупное и срочное, что наверняка у них есть.
я всё пытаюсь прогуглить параметры из ссылки (https://social.technet.microsoft.com/Forums/ie/en-US/3a7b4626-1662-4dc9-9a6a-b43af307fb7e/change-file-asociations-via-powershell?forum=winserverpowershell),
-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
в самом setacl хелп микроскопический »
Я бы так не сказал (https://helgeklein.com/setacl/documentation/command-line-version-setacl-exe/).

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
28-08-2018, 11:05
спасибо, тут я пытался вызвать хелп в консоли )
Но теперь с правами не понимаю - если в этой строке
-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
кстати, а 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




© OSzone.net 2001-2012