Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как вычислить SID юзера и использовать его при добавлении в реестре?

Ответить
Настройки темы
CMD/BAT - [решено] как вычислить SID юзера и использовать его при добавлении в реестре?

Пользователь


Сообщения: 99
Благодарности: 4

Профиль | Отправить PM | Цитировать


Изменения
Автор: SvoiLudi
Дата: 05-05-2010
Кроме того, много надо будет загонять:

[HKEY_USERS\S-1-5-21-2784700513-3056928466-3982877403-1001\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"{1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE}"="v:\\Библиотеки с Windows 7 и новее"


можно-ли вычислить SID юзера и использовать его в качестве переменной в reg-файле? или нужно будет добавлять командой из cmd-файла?

на другом форуме нашёл что-то, но ругается на НЕПРЕДВИДЕННОЕ ПОЯВЛЕНИЕ: %%a. что не так? где его применять?


Цитата:
Есть утилита psGetSid.exe, входящая в состав пакета PS Tools, Марка Руссиновича. Она находит SID юзера, вошедшего в систему. Вот такой строкой из командного файла, можно получить SID в переменной %%a:
Код: Выделить весь код
for /f "usebackq tokens=*" %%a in (`"psgetsid | find "S-""`) do echo %%a
где здесь конец строки и где начало? сколько строк здесь?

Отправлено: 01:56, 20-04-2010

 

Пользователь


Сообщения: 99
Благодарности: 4

Профиль | Отправить PM | Цитировать


МОЖЕТ БЫТЬ С ПОМОЩЬЮ PowerShell? Понимает ли он написанное в cmd?

Отправлено: 10:28, 20-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1273
Благодарности: 1030

Профиль | Отправить PM | Цитировать


SvoiLudi,

Код: Выделить весь код
@Echo Off

Set /P "ProfileName=Введите имя профиля пользователя: "
For /F "Tokens=7 Delims=\" %%A In ('REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find "S-"') Do (
	REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\%%A" /v ProfileImagePath|Find /I "%ProfileName%" >nul&&Call :Func %%A&&GoTo :EOF
)
Echo Профиль пользователя %ProfileName% не найден.
GoTo :EOF

:Func
:: Здесь пишем свои команды, SID передается в качестве параметра %1. Пример команды ниже
Echo Профиль пользователя %ProfileName% найден, его SID - %1
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:48, 20-04-2010 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата SvoiLudi:
можно-ли вычислить SID юзера и использовать его в качестве переменной в reg-файле? или нужно будет добавлять командой из cmd-файла? »
как вариант - использовать вместо REG-файла INF-файл:
Код: Выделить весь код
[Version]
Signature="$Windows NT$"

[DefaultInstall]
AddReg = HKU.AddReg

[HKU.AddReg]
HKU,"%SID1%\%ShellFolders%","My Video",,"v:\Мои видеозаписи"

[Strings]
ShellFolders=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
одноименный батник создает временную копию INF, добавляет в конец SID и запускает на выполнение:
Код: Выделить весь код
Copy /V /Y "%~dpns0.inf" "%TEMP%\%~ns0.inf"
Echo SID1=S-1-5-21-116022207-583602576-2121419680-108623>>"%TEMP%\%~ns0.inf"
rundll32 setupapi,InstallHinfSection DefaultInstall 128 %TEMP%\%~ns0.inf

Отправлено: 13:03, 20-04-2010 | #4


Пользователь


Сообщения: 99
Благодарности: 4

Профиль | Отправить PM | Цитировать


amel27, не совсем понял, зачем делать копию? единственная гипотеза - для каждого пользователя.

El Sanchez, спасибо за помощь, всю ночь голову ломал. Упростил для текущего пользователя. Но теперь как добавить в реестр из коммандного файла?

Отправлено: 16:09, 20-04-2010 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата SvoiLudi:
не совсем понял, зачем делать копию? »
на случай многократного использования INF, т.е. для запуска с любыми параметрами (любым SID), можно оформить как процедуру или передавать SID в батник как параметр (%1), для каждого из которых требуется применение параметров, прописанных в INF-файле

Отправлено: 16:24, 20-04-2010 | #6


Пользователь


Сообщения: 99
Благодарности: 4

Профиль | Отправить PM | Цитировать


будет только 1 пользователь

Отправлено: 16:58, 20-04-2010 | #7


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1273
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата SvoiLudi:
Но теперь как добавить в реестр из коммандного файла? »
SvoiLudi,

Если использовать мой скрипт, то...
Код: Выделить весь код
...
:Func
Set RegPath="HKEY_USERS\%1\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
Reg Add %RegPath% /v "{1B3EA5DC-B587-4786-B4EF-BD1DC332AEAE}" /d "v:\Библиотеки с Windows 7 и новее" /f 1>nul 2>&1
Reg Add %RegPath% /v "My Video" /d "v:\Мои видеозаписи" /f 1>nul 2>&1
Reg Add %RegPath% /v "{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}" /d "v:\Сохраненные стандартные игры от Майкрософт" /f 1>nul 2>&1
и т.д.

Set RegPath="HKEY_USERS\%1\Software\Microsoft\MediaPlayer\Preferences"
Reg Add %RegPath% /v "TrackFoldersDirectories5" /d "v:\Общие\Общедоступные ТВ-записи" /f 1>nul 2>&1
и т.д.
... и почитать справку reg add /?

Для способа с INF-файлом от amel27 добавить строки в секции [HKU.AddReg]
Код: Выделить весь код
HKU,"%SID1%\%ShellFolders%","My Video",,"v:\Мои видеозаписи"
HKU,"%SID1%\%ShellFolders%","My Pictures",,"v:\Изображения"
и т.д.

HKU,"%SID1%\%Preferences%","TrackFoldersDirectories2",,"v:\Мои видеозаписи"
HKU,"%SID1%\%Preferences%","TrackFoldersDirectories3",,"v:\Общие\Общая музыка"
и т.д.
, добавить строки в секции [Strings]
Код: Выделить весь код
ShellFolders=Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Preferences=Software\Microsoft\MediaPlayer\Preferences
LastSharedFolders=Software\Microsoft\MediaPlayer\Preferences\HME\LastSharedFolders
и т.д.
... и почитать статью про INF-файлы
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:48, 22-04-2010 | #8


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


ещё можно так:
когда нужно добавить очень много строк, которые экспортированы из реестра в reg файл, то проще использовать reg import %имяФайла%


Код: Выделить весь код
@Echo Off

rem Set /P "ProfileName=Введите имя профиля пользователя: "
set ProfileName=%username%
For /F "Tokens=7 Delims=\" %%A In ('REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList" /s^|Find "S-"') Do (
	REG QUERY "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\%%A" /v ProfileImagePath|Find /I "%ProfileName%" >nul&&Call :Func %%A&&GoTo :EOF
)
Echo Профиль пользователя %ProfileName% не найден.


GoTo :EOF

:Func
:: Здесь пишем свои команды, SID передается в качестве параметра %1. Пример команды ниже
Echo Профиль пользователя %ProfileName% найден, его SID - %1

ECHO	Windows Registry Editor Version 5.00	> %temp%\BetaClock.reg
ECHO.		>> %temp%\BetaClock.reg
ECHO	[HKEY_USERS\%1\Software\BetaClock]	>> %temp%\BetaClock.reg
ECHO.		>> %temp%\BetaClock.reg
ECHO	[HKEY_USERS\%1\Software\BetaClock\CalendarSchema]	>> %temp%\BetaClock.reg
ECHO	"Unsaved"=dword:00000000	>> %temp%\BetaClock.reg
ECHO	"CurrentElementName"="LV"	>> %temp%\BetaClock.reg
ECHO.		>> %temp%\BetaClock.reg
ECHO	[HKEY_USERS\%1\Software\BetaClock\CalendarSchema\SchemaElements]	>> %temp%\BetaClock.reg
ECHO	"Count"=dword:00000001	>> %temp%\BetaClock.reg
ECHO	"0"="LV"	>> %temp%\BetaClock.reg
ECHO.		>> %temp%\BetaClock.reg



echo reg file import
reg import %temp%\BetaClock.reg



echo del tem reg file

del %temp%\BetaClock.reg /Q /F

Последний раз редактировалось deps, 16-06-2010 в 15:11.


Отправлено: 12:36, 16-06-2010 | #9


Новый участник


Сообщения: 17
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может кто знает аналогичное решение средствами VBS?

Отправлено: 15:09, 21-03-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] как вычислить SID юзера и использовать его при добавлении в реестре?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] Изменение SID'a при клонировании систем __sa__nya Microsoft Windows 7 7 14-06-2013 14:58
CMD/BAT - [решено] найти файл и использовать его имя Mad Max Скриптовые языки администрирования Windows 4 19-07-2009 23:13
Как вы думаете, имеет ли смысл использовать Ad-Aware при наличии AVP? truvo Хочу все знать 6 08-05-2009 23:54
[решено] Цикл... Как его правельно использовать в моём случае??? sashadeg AutoIt 3 24-03-2009 16:53
Интерфейс - [решено] Как в реестре Windows XP поменять местами букву логического диска и его имя? Star_net Microsoft Windows 2000/XP 5 19-07-2008 12:54




 
Переход