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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Переменные среды - скрыть путь 'домашней папки' пользователя (http://forum.oszone.net/showthread.php?t=209019)

morozov_s_v 15-06-2011 11:09 1694764

Переменные среды - скрыть путь 'домашней папки' пользователя
 
Всем привет.

Есть Win Server SBS 2003 - ДК. АД. пользователи.

Сделал квотирование на домашние папки пользователей.

Но при присоединении домашние папки к пользователю в названии присоединенного сетевого диска по умолчанию виден путь к домашней папке пользователя.

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

Создал я значит в переменных средах ДК (системные переменные):

имя переменной : share

значение переменной : \\server2\test

Это же проделал и на пользовательском ПК (пользовательские переменные).

Но при добавлении пути домашней папке в учетке пользователя типа : \\server2\%share%\%username%

пишет что путь не найден ( а путь : \\server2\test\%username% >>> конечно добавляет). Если писать %share%\%username% то ругается на неприемлемый путь.

Если проделать просто на ДК и на ПК пользователя в 'выполнить' набрав %share% то открывается мне нужная расшариная папочка.

У расшаренной папки на общий доступ права 'все' в безопасности тоже полный доступ.

Что я делаю не так, подскажите.

amel27 15-06-2011 14:46 1694866

Цитата:

Цитата morozov_s_v
в названии присоединенного сетевого диска по умолчанию виден путь к домашней папке пользователя »

переименовать?
CMD/BAT - [решено] Скрипт - подключить сетевой диск и назначить ему имя.

morozov_s_v 15-06-2011 15:49 1694905

Цитата:

Цитата amel27
переименовать?
CMD/BAT - [решено] Скрипт - подключить сетевой диск и назначить ему имя. »


Тык а через переменные среды разве нельзя ?
Ведь мне надо чтобы для каждого пользователя своя отдельная сетевая папка создавалась, а тут(CMD/BAT - [решено] Скрипт - подключить сетевой диск и назначить ему имя.) как я понял такого нет.

cameron 15-06-2011 16:13 1694919

делайте это через Group Policy Preferences, тогда скроете всё что хотите, если я правильно поняла идею.

iMirRor 15-06-2011 17:06 1694954

У меня в скрипте на VB прописано так:
Код:

const HKEY_CURRENT_USER = &H80000001
Set WSHNetwork = WScript.CreateObject("WScript.Network")
...
Set objReg = GetObject ("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
On Error resume next
user = lcase(wshnetwork.username)
...
WshNetwork.RemoveNetworkDrive "Q:","true","true"
WshNetwork.MapNetworkDrive "Q:","\\trmsrv\Personals$\Dep\"+user,"false"
objReg.CreateKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##trmsrv#Personals$#Dep#"+user
objReg.SetStringValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##trmsrv#Personals$#Dep#"+user, "_LabelFromReg", "Персональный диск"
...
WScript.Quit

В данном случае скрипт, выполняющий при входе в домен ассоциирует диск Q с предварительно созданной папкой (\\trmsrv\Personals$\Dep\vasya_p для пользователя "vasya_p") и присваивает название ей: "Персональный диск".

morozov_s_v 16-06-2011 16:35 1695688

Цитата:

Цитата iMirRor
У меня в скрипте на VB прописано так:
Код:
const HKEY_CURRENT_USER = &H80000001
Set WSHNetwork = WScript.CreateObject("WScript.Network")
...
Set objReg = GetObject ("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
On Error resume next
user = lcase(wshnetwork.username)
...
WshNetwork.RemoveNetworkDrive "Q:","true","true"
WshNetwork.MapNetworkDrive "Q:","\\trmsrv\Personals$\Dep\"+user,"false"
objReg.CreateKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##trmsrv#Personals$#Dep#"+user
objReg.SetStringValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##trmsrv#Personals$#Dep#"+user, "_LabelFromReg", "Персональный диск"
...
WScript.Quit
В данном случае скрипт, выполняющий при входе в домен ассоциирует диск Q с предварительно созданной папкой (\\trmsrv\Personals$\Dep\vasya_p для пользователя "vasya_p") и присваивает название ей: "Персональный диск". »


Испытал скриптик он работает, но все так и остается - те. виден полный путь в названии прикрепленного диска.

А можете, если не сложно пояснить вкратце строки скрипта :))

iMirRor 16-06-2011 18:28 1695781

Код:

const HKEY_CURRENT_USER = &H80000001
Здесь просто константа для ветки, где все эти настройки прописываются - оставляете как есть.
Код:

Set WSHNetwork = WScript.CreateObject("WScript.Network")
Объявляется переменная для работы с сетевыми ресурсами - оставляете как есть.
Код:

Set objReg = GetObject ("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
Объявляется переменная для работы с реестром - оставляете как есть.
Код:

On Error resume next
Если ошибка, не прерывать работу скрипта - оставляете как есть.
Код:

user = lcase(wshnetwork.username)
в переменной user - имя пользователя компьютера (в данном случае в нижнем регистре) - оставляете как есть
Код:

WshNetwork.RemoveNetworkDrive "Q:","true","true"
Отсоединяется диск Q, если он был подключен - оставляете как есть.
Код:

WshNetwork.MapNetworkDrive "Q:","\\trmsrv\Personals$\Dep\"+user,"false"
присоединяете Q к сетевому компьютеру (в данном случае на сервере trmsrv есть расшаренная папка Personals$ (знак доллара делает папку скрытой, когда расшариваете папку, добавьте к ее названию $ без пробела и ее не будет видно в проводнике), в ней подпапка Dep и в ней папки с именами всех пользователей (их логины). В Вашем случае нужно вместо "\\trmsrv\Personals$\Dep\" подставить свой путь, но внутри должны еще быть папки пользователей.
Код:

objReg.CreateKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##trmsrv#Personals$#Dep#"+user
Здесь создается ветка реестра c названием того пути, что был прописан строкой ранее. В вашем случае ##trmsrv#Personals$#Dep# заменяете на свой путь, как видите, здесь символ # заменяет \
Код:

objReg.SetStringValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##trmsrv#Personals$#Dep#"+user, "_LabelFromReg", "Персональный диск"
здесь создается параметр _LabelFromReg в созданой ранее ветке и ему присваивается название диска (здесь - "Персональный диск"). В вашем случае так же ##trmsrv#Personals$#Dep# меняете на свой путь. И если точно замените, то диск будет называться как напишите. В 2000 это не действует, а в XP и выше - работает
Код:

WScript.Quit
Это конец скрипта.

morozov_s_v 17-06-2011 14:33 1696376

Цитата:

Цитата iMirRor
iMirRor iMirRor вне форума »

Я изменил скрипт под себя :
-----------------------------------------------------------------------
const HKEY_CURRENT_USER = &H80000001

Set WSHNetwork = WScript.CreateObject("WScript.Network")

Set objReg = GetObject ("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
On Error resume next
user = lcase(wshnetwork.username)

WshNetwork.RemoveNetworkDrive "O:","true","true"
WshNetwork.MapNetworkDrive "O:","\\server2\test$\"+user, "false"
objReg.CreateKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##server2#test$#"+user
objReg.SetStringValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\##server2#test$#"+user, "LabelFromReg", "Персональный диск"

WScript.Quit
-----------------------------------------------------------------------
но все равно пишет полный путь : petrov на "server2\test$" (O)

iMirRor 17-06-2011 21:07 1696638

На клиентской машине переименуйте имя диска вручную.
Зайдите в реестр по этому пути "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\" и посмотрите, есть ли ваше имя диска и сравните параметры. Может конечное имя расшаренной подпапки и значение user у вас разные? Попробуйте вывести на экран имя user, поместив команду
Код:

user = lcase(wshnetwork.username)
Wscript.echo user

в скрипт и сравнить с именем папки.

Iska 18-06-2011 05:19 1696810

morozov_s_v, попробуйте в части именования использовать Проводник:
vbscript: подключение сетевого ресурса и назначение ему описания
[решено] Скрипт - подключить сетевой диск и назначить ему имя.
(хотя у меня нет уверенности, отработает ли сие в logon-скрипте).

amel27 18-06-2011 09:29 1696846

Цитата:

Цитата morozov_s_v
Тык а через переменные среды разве нельзя ? »

переменные среды тут не помогут - на имя диска это никак не повлияет
Цитата:

Цитата morozov_s_v
имя переменной : share
значение переменной : \\server2\test

Но при добавлении пути домашней папке в учетке пользователя типа : \\server2\%share%\%username% »

... "\\server2\%share%\%username%" раскроется в "\\server2\\\server2\test\%username%"

пример переименования диска "Z:" в имя пользователя на VBS:
Код:

WScript.CreateObject("Shell.Application").NameSpace("Z:").Self.Name=WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%UserName%")
Цитата:

Цитата Iska
у меня нет уверенности, отработает ли сие в logon-скрипте »

именно в логон-скрипте!

Iska 18-06-2011 15:00 1696981

Цитата:

Цитата amel27
именно в логон-скрипте! »

Будем знать ;)!


Время: 09:44.

Время: 09:44.
© OSzone.net 2001-