Показать сообщение отдельно
Старый 08.04.2009, 17:42   #12
begemot31
Ветеран
 
Аватар для begemot31
 
Пол:Мужской
Регистрация: 06.04.2009
Адрес: г. Киев
Сообщений: 2,442
Репутация: 5038
Red face Re: Для сервера нужна программа....Помоги найти

Цитата:
Сообщение от solo_g Посмотреть сообщение
У меня сделана файлопомойка по достаточно жёстким правила , у каждого одела свой каталог с папками юзеров отдела , создавать и удалять они имеют право только в своём каталоге + в каждом отделе своя расшаренная папка с доступом только для этого отдела, помимо этого создана шаровая папка для обмена инфой между отделами которая автоматом очищаеться каждые сутки

Этот подход мне нравится больше. На просмотр логов хватит терпения не более чем на неделю. Наиболее легкий вариант следующий:
1. Все отделы имеют свои директории
2. Внутри каждой директории личные папки с доступом для чтения для всей группы
3. Внутри личной папки папка Private только с личным доступом
4. Назначение "Мои документы" на личную сетевую папку
5. Для каждого отдела папка Common для временного хранения (неболее 10 дней, после чего, файлы удаляются автоматически)

Такой подход обеспечивает:
1. Нет локальных "Мои документы", что позволяет бэкапить все файлы
2. Если автоматизировать конфигурирование каждого пользователя, то "Мои документы" и все прочие групповые и личные иконки будут появляться на любой машине в зависимости от логина. Н

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

on error resume next
dim UserPatch, UserProg
dim UserPatchP
dim UserComputer
dim UserLocal
dim Server, DriveLetter, DriveExport, Domain
DriveLetter = "c:"
DrivePublic = "c:"
DriveExport = "M:"
Server = "\\Begemot"
PublicFolder = "\Public\"
Domain ="pro100lifebase"

Set wshNetwork = WScript.CreateObject("WScript.Network")
Set wshShell = WScript.CreateObject("WScript.Shell")
call MapNetwork(DrivePublic, PublicFolder) ' map network drive to Public

Do while wshNetwork.username = ""
WScript.Sleep 250
Loop

User = wshNetwork.username
domain = wshNetwork.userdomain
UserComputer = wshNetwork.ComputerName

if UCase(UserComputer) = "BEGEMOT" then
UserLocal=true 'Локально на сервере
DriveLetter = "c:"
DrivePublic = "c:"
else
UserLocal=false 'На рабочей станции
DriveLetter = Server
DrivePublic = Server
end if

call DelIcon (GetDesktopPath, "_*.lnk") 'Удаление предедущих динамических иконок
'================================================= =======================
' конфигурация для интернета
call regProxy ("10.1.1.165:3128") 'Установить proxy
'call regProxy ("") 'Нет proxy
'Стартовая страница
call regStartPage ("http://www.bank.gov.ua/kurs/last_kurs1.htm")
'================================================= =======================

'Создание иконки на рабочем столе (директория общего пользования)
'параметры:
' имя иконки, путь, рабочая директория, путь к картинек (файл .ico), клавиши быстрого вызова
call ShortCutDesktop("\\_Public.lnk", _
DrivePublic & PublicFolder, _
DrivePublic & PublicFolder, _
DrivePublic & PublicFolder & "Icons\CD.ico,0", _
"CTRL+ALT+P")
' используя ADSI получаем список групп, в которые входит пользователь
adspath = "WinNT://" & domain & "/" & user
set adsobj = GetObject(adspath)

' Вызов других подпрограмм based on the Windows NT group of the user
dim GroupTitle

' Создание иконок для групп пользователей
for each prop in adsobj.groups 'Для всех групп
'WScript.Echo "Group " & prop.name
select case UCase(prop.name) ' имена групповых иконок
case "GR_ACCOUNT" 'группа БУХГАЛТЕРИЯ
if UserLocal then
GroupTitle ="_Бухгалтерия"
UserPatch ="\Program Files\1Cv77\BIN\"
UserProg ="1cv7.exe"
call ShortCutDesktop("\\" & GroupTitle & ".lnk", _
DriveLetter & UserPatch & UserProg, _
DriveLetter & UserPatch, _
DrivePublic & PublicFolder & "Icons\WorkGroup.ico,0", "")
end if
GroupTitle ="_Директория для экспорта"
if UserLocal then
UserPatch ="\Users\1C\pro100life\Out\"
end if
' Всегда создавать диск m: для экспорта
UserPatch ="\Out\"
call MapNetwork(DriveExport, Server & UserPatch) 'Диск на букву
UserProg =""
call ShortCutDesktop("\\" & GroupTitle & ".lnk", _
DriveLetter & UserPatch & UserProg, _
DriveLetter & UserPatch, _
DrivePublic & PublicFolder & "Icons\Box.ico,0", "")
case "GR_BUDGET" 'группа БЮДЖЕТ
'персональные директории
if UserLocal then
UserPatchP = DriveLetter & "\Users\Budget\" & User & "\"
UserProg= "Budget.mdb"
call ShortCutDesktop("\\_Бюджет.lnk", _
UserPatchP & UserProg, _
UserPatchP, _
DrivePublic & PublicFolder & "Icons\Computer.ico,0", "")
end if
case "GR_METODOLOGY" 'группа МЕТОДОЛОГИИ
'Для работы с базой на Access (1 файл с данными и интерфейсные файлы с прилинкованной базой
'для каждого клиента
if UserLocal then
'персональные директории для каждого пользователя группы
UserPatchP = DriveLetter & "\Users\Clients\" & User & "\"
UserProg= "Clients.mdb"
call ShortCutDesktop("\\_Страховой учет.lnk", _
UserPatchP & UserProg, _
UserPatchP, _
DrivePublic & PublicFolder & "Icons\Computer.ico,0", "")
end if
case else
UserPatch =""
end select
next
UserPatch =""

''-----------------------------------------------------------------
' Пути на личные директории
'Wscript.echo UCase(User)
UserPatch =" "
' select case Left(UCase(User),3)
'case "ADM"
' UserPatch ="ADM"
'case "AC_"
' UserPatch ="Account\"& User
'case else
' UserPatch =" "
' end select

'Wscript.echo "home icon " & Server & UserPatch
if UserPatch <> " " then
call ShortCutDesktop("\\_Рабочий каталог.lnk", _
Server & UserPatch, _
Server & UserPatch, _
PublicFolder & "Icons\Computer.ico,0", _
"CTRL+ALT+H")
'Установка "Мои Документы" на сетевую папку
call regMyDoc (Server & UserPatch)
end if
'------------------------------------------------------------------------------
' Все. Дальше реализация использованных процедур

function GetDesktopPath
'Путь к рабочему столу
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
GetDesktopPath = WSHShell.SpecialFolders("Desktop")
end function

sub DelIcon (SPach, Mask)
'Удаление файлов по маске
Dim FSO
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
FSO.DeleteFile SPach & "\" & Mask
end sub

sub ShortCutDesktop(Name, TargetPath, WorkingDirectory, IconLocation,HotKey)
'------------------------------------------------------------------
' Этот пример показывает, как использовать объект WSHShell
' для создания ярлыка на Рабочем столе.
' ************************************************** *************' *
' * Методы, связанные с ярлыками.
' *
'WScript.Echo "**ShortCutDesktop " & Name & ", " & TargetPath & ", " & WorkingDirectory & ", " & IconLocation
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
Dim MyShortcut, MyDesktop, DesktopPath
if TRUE then
' Читаем путь к Рабочему столу
DesktopPath = WSHShell.SpecialFolders("Desktop")
'WScript.Echo "[" & DesktopPath & "]"
' Создаем ярлык на Рабочем столе
'WScript.Echo "ShortCutDesktop " & TargetPath
Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & "\" & Name) ' "\Shortcut to notepad.lnk")

' Задаем свойства объекта-ярлыка и сохраняем их
MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings(TargetPath) 'WSHShell.ExpandEnvironmentStrings ("%windir%\notepad.exe")
MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings(WorkingDirectory ) 'WSHShell.ExpandEnvironmentStrings ("%windir%")
MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings(IconLocation) 'WSHShell.ExpandEnvironmentStrings ("%windir%\notepad.exe, 0")
if Len(HotKey) > 1 then
MyShortcut.HotKey = HotKey
end if
MyShortcut.WindowStyle = 4
MyShortcut.Save
'''''''WScript.Echo TargetPath
end if
end sub

sub MapNetwork(driveletter, netsharex)
on error resume next
err.clear
'------------------------------------------------------------------
' проверяем наличие сетевого диска, в случае его присутствия удаляем
' и добавляет новое назначение
dim netshare
dim k
k = Len(netsharex)
'''''WScript.Echo k
if CompStr(Right(netsharex,1), "\",1) then
netshare = Left(netsharex,k-1)
else
netshare = netsharex
end if
'WScript.Echo "Подключаем сетевой диск." & netsharex & "->" & netshare & "]"
Dim Drive
'WScript.Echo "Проверяем наличие подключенного сетевого диска " & DriveLetter
CheckNetworkMapping = False
For Each Drive In wshNetwork.EnumNetworkDrives
if LCase(Drive) = LCase(DriveLetter) Then
CheckNetworkMapping = True
Exit For
End if
Next
If CheckNetworkMapping Then
'WScript.Echo "Сетевой диск найден"
wshNetwork.RemoveNetworkDrive driveletter, true
if err <> 0 then
'WScript.Echo "не могу отключить " & driveletter
end if
Else
'WScript.Echo " Сетевой диск не найден"
End if

wshNetwork.MapNetworkDrive driveletter, netshare, false
if err <> 0 then
'Подключение не удалось
'WScript.Echo "не могу ассоциировать " & driveletter & " с " & netshare
end if
end sub

sub regPrinter
'================================================= =========================
'
' NAME: TSPrintFix.vbs
'
' AUTHOR: Mark D. MacLachlan , The Spider's Parlor ' URL: [Для просмотра ссылок требуется регистрация. Зарегистрироваться...] ' (c) 2003 All Rights Reserved ' DATE : 12/22/2003 '
' COMMENT: Fixes printing via terminal services to allow DOT4 printers '
'================================================= =========================
myPrompt = MsgBox("This script will set up your printers for use with Terminal Services",vbOKCancel,"Setup Printers for Terminal Services?")
If myPrompt = 1 Then
Set WshShell=WScript.CreateObject("WScript.Shell")
keypath ="HKCU\Software\Microsoft\Terminal Server Client\Default\AddIns\RDPDR\FilterQueueType"
WshShell.RegWrite keypath, -1, "REG_DWORD"
If WshShell.RegRead(keypath) = "-1" Then
MsgBox "Setup was successful",,"Success"
Else
MsgBox "Sorry A Problem Was Encountered" & vbCrLf & "Make sure you have permission to write to the registry.",,"Something went wrong"
End If
End If
WScript.Quit
end sub

sub regProxy (MYPROXY)
'WScript.Echo "Установка прокси сервера " & MYPROXY & "/" & Len(MYPROXY)
prefix = "HKCU\Software\Microsoft\Windows\CurrentVersion\In ternet Settings\"
if Len(MYPROXY) > 1 then
'WScript.Echo "Старые установки Proxy-сервера: " & wshShell.RegRead(prefix & "ProxyServer")
wshShell.regWrite prefix & "ProxyServer", MYPROXY
'WScript.Echo "Новые установки Proxy-сервера: " & wshShell.RegRead(prefix & "ProxyServer")
'WScript.Echo prefix & "ProxyEnable" & ", 1"
wshShell.regWrite prefix & "ProxyEnable", 1 'DWord(1)
'WScript.Echo "Новые установки Proxy-сервера: " & wshShell.RegRead(prefix & "ProxyEnable")
else
'не использовать proxy
wshShell.regWrite prefix & "ProxyEnable", DWord(0)
end if
end sub

sub regStartPage(MyPage)
'Стартовая страничка для IE
prefix = "HKCU\Software\Microsoft\Internet Explorer\Main\"
wshShell.regWrite prefix & "Start Page", MyPage
end sub

sub regDNS (MYPROXY)
'Установка DNS сервера
prefix = "HKCU\Software\Microsoft\Windows\CurrentVersion\In ternet Settings\"
if Len(MYPROXY) > 1 then
'WScript.Echo "Старые установки Proxy-сервера: " & wshShell.RegRead(prefix & "ProxyServer")
wshShell.regWrite prefix & "ProxyServer", MYPROXY
'WScript.Echo "Новые установки Proxy-сервера: " & wshShell.RegRead(prefix & "ProxyServer")
wshShell.regWrite prefix & "ProxyEnable", DWord(1)
'WScript.Echo "Новые установки Proxy-сервера: " & wshShell.RegRead(prefix & "ProxyEnable")
else
'не использовать proxy
wshShell.regWrite prefix & "ProxyEnable", DWord(0)
end if
end sub

sub regMyDoc (MyDoc)
'Установка "Мои документы" на сетевую папку
prefix = "HKCU\Software\Microsoft\Windows\CurrentVersion\Ex plorer\Shell Folders\"
'WScript.Echo "Старые установки Мои документы: " & wshShell.RegRead(prefix & "Personal")
wshShell.regWrite prefix & "Personal", MyDoc
'WScript.Echo "Новые установки Мои документы: " & wshShell.RegRead(prefix & "Personal")

wshShell.regWrite prefix & "My Music", MyDoc & "\My Music"
wshShell.regWrite prefix & "My Pictures", MyDoc & "\My Pictures"

prefix = "HKCU\Software\Microsoft\Windows\CurrentVersion\Ex plorer\User Shell Folders\"
WScript.Echo "*Старые установки Мои документы: " & wshShell.RegRead(prefix & "Personal")
wshShell.regWrite prefix & "Personal", MyDoc
WScript.Echo "*Новые установки Мои документы: " & wshShell.RegRead(prefix & "Personal")

wshShell.regWrite prefix & "My Music", MyDoc & "\My Music"
wshShell.regWrite prefix & "My Pictures", MyDoc & "\My Pictures"

prefix = "HKLM\Software\Microsoft\Windows\CurrentVersion\Ex plorer\Shell Folders\"
WScript.Echo "**Старые установки Мои документы: " & wshShell.RegRead(prefix & "Personal")
wshShell.regWrite prefix & "Personal", MyDoc
WScript.Echo "**Новые установки Мои документы: " & wshShell.RegRead(prefix & "Personal")

wshShell.regWrite prefix & "My Music", MyDoc & "\My Music"
wshShell.regWrite prefix & "My Pictures", MyDoc & "\My Pictures"
end sub

sub DelFiles (Disk, TheExtension)
' Удаление файлов с заданным расширением с диска
Dim FSO, WSH
Dim TheFolder, Message, YesNo
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set TheFolder = FSO.GetFolder(Disk) 'Сначать с заданого каталога
'TheExtension = InputBox("Укажите расширение файлов, которые нужно удалить, например: tmp. Использовать точку (.) запрещено")
'TheExtension = UCase(TheExtension)
WorkWithSubFolders TheFolder, TheExtension
MsgBox "Готово! Обработано " & TheCount & " каталогов. Щелкните на OK или нажмите Enter для завершения сценария."
end sub

Sub WorkWithSubFolders(ByVal AFolder, ByVal TheExtension)
Dim MoreFolders, TempFolder
KillFilesWithExtensionIn AFolder, TheExtension
Set MoreFolders = AFolder.SubFolders
For Each TempFolder In MoreFolders
WorkWithSubFolders TempFolder, TheExtension
Next
End Sub

Sub KillFilesWithExtensionIn(AFolder,TheExtension)
Dim AFile, TheFiles
On Error Resume Next
Set TheFiles = AFolder.Files
For Each AFile In TheFiles
If UCase(FSO.GetExtensionName(AFile.Path)) = TheExtension Then
AFile.Delete
End If
Next
End Sub
begemot31 вне форума
 
Ответить с цитированием Вверх
Сказали спасибо:
 
Время генерации страницы 0.09261 секунды с 9 запросами