изменить объяснение, чтобы улучшить ответы.
Проект
Как сторонний инженер, я посещаю сайт по установке части Программного обеспечения.Инфраструктура "очень" заблокирована.Мне будет предоставлена учетная запись администратора на день установки программного обеспечения.Однако, чтобы заставить программное обеспечение работать должным образом ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ (не только для входа в систему администратора), я был проинструктирован ИТ-отделом.вручную создать ключ и затем добавить строковое значение в созданный ключ для каждой учетной записи пользователя на ПК.Наше программное обеспечение в стандартной среде обслуживает это с помощью ключа reg для всех пользователей, но оно не запускается (не разрешается - не спрашивайте!) В этих конкретных местах.
Место, где они хотятKEY находится в пути HKEY_USERS в регистре: -
HKEY_USERS \ S-1-5-21-XXXXXXXXX-XXXXXXXXX-XXXXXXXXXX-XXXXX \ Software \ Microsoft \
, скажем, 2 человекавошли в систему на этом ПК, и им нужно использовать наше программное обеспечение позже
john.jones
mary.shelley
Мне нужно найти sid, относящийся к Джону Джонсу, и пойти идобавить ключ к его разделу в HKEY_USERS
Затем мне нужно найти sid mary.shelley, а затем перейти и ключ к ее разделу HKEY_USERS и т. д.
Теперь я знаю, из каких сред я работаютам может быть более 20 учетных записей пользователей, поэтому очень хотелось бы избегать ручного добавления их ключей снова и снова для всех учетных записей на каждом компьютере, на котором я устанавливаю.
Сценарий входа в систему будет лучше, но это все, с чем мне приходится иметь дело в настоящее время.
Состояние сценария сейчас
@echo off
REM Read file with user names
FOR /F "usebackq tokens=*" %%G in ("users.txt") do (
REM use user name to find SID
FOR /F "delims=" %%H IN ('"wmic useraccount where name='%%~G' get sid| findstr /vi "SID""') DO (
REM Strip trailing line with CR
FOR /F "delims= " %%I IN ("%%~H") DO (
REM %%I is now the SID of the USER
REG ADD "HKEY_USERS\%%I\Software\Microsoft\addstuffhere" /f
REG ADD "HKEY_USERS\%%I\Software\Microsoft\addstuffhere" /t REG_SZ /d "addstuffhere"" /f
)
)
)
Это в значительной степени автоматизирует все как запланировано;циклически просматривает текстовый файл с именами пользователей пользователей, которые используют ПК, захватывает SID, применяет sid в качестве переменной, затем используется для записи ключа в нужном месте для этого пользователя и далее по списку делает то же самое для каждой учетной записив списке.
Единственная часть, которая может нуждаться в изменении, - это раздел WMIC, который не находит определенных пользователей, имеющих подлинные учетные записи Windows.
, когда я тестировал рабочий код на своем ноутбуке, он отлично работал для моего администратораучетная запись, но я вошел в систему как joe_blogs (например) придумал "экземпляр не доступен".Поскольку в отдельности код WMIC просто вызывал не всех, а несколько, поэтому он не мог сделать то, что ему нужно было сделать.
Я знаю из предыдущих вопросов, этот код WMIC поднимает каждую учетную запись: -
WMIC Path Win32_UserProfile Where "Special='False' And Not LocalPath='Null'" Get LocalPath,SID | find /v ""
Возможно, это можно включить в текущий рабочий код, чтобы обеспечить обслуживание каждой учетной записи.
Я знаю, что всем пользователям необходимо войти в систему на каждом ПК, чтобы это работало, поэтому, что касается списка профилей пользователей, я могу ответить на этот вопрос, спрашивая, "кому из ваших пользователей нужно использоватьнаши вещи на ПК "и поблагодарите users.txt
- надеюсь, это действительно объясняет это: /
отредактируйте инструкции к тому, что меня попросили сделать (слегка изменили имена ключей для конфиденциальности)
1. Log on to the PC with a standard technician admin account
2. Open regedit.exe
3. Navigate to* HKEY_USERS\S-1-5-21-XXXXXXXXX-XXXXXXXXX-XXXXXXXXXX- XXXXX\Software\Microsoft\Terminal Server Client\Default\Addins\
a. Right-click Addins > New > Key and create foo
b. Right-click foo > New > String Value and create Name
c. Double-click Name and in Value Data enter† C:\foo\file\foo.dll
4. Repeat step 3 for each user: it should be possible to edit the SID in an exported key by right-clicking on the next
HKEY_USERS entry > Rename > Ctrl+C > Esc then replacing the SID in the exported reg key – this has not been tested but may be worth trying
*The user SID is unique so this has to be done per user. If there are a lot of users listed in the registry it is possible to find which SID belongs to which user by checking the key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList