<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Создать и расшарить папку на удалённом сервере]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5437</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5437&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Создать и расшарить папку на удалённом сервере».]]></description>
		<lastBuildDate>Mon, 31 Jan 2011 05:48:10 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Создать и расшарить папку на удалённом сервере]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44638#p44638</link>
			<description><![CDATA[<div class="quotebox"><cite>Rialto пишет:</cite><blockquote><p>... мне не совсем нравится в нём процедура расшаривания папки (нужно чтобы everyone быть full access )...</p></blockquote></div><p>Можно иначе - в два этапа:<br />- открываем общий доступ к папке и получаем единственную запись - для всех - с разрешениями только на чтение;<br />- назначаем этой записи разрешение на полный доступ.</p><div class="codebox"><pre><code>Dim objWMI, objSecSettings, objSD, objACE
Dim strShareServer, strShareName, strShareTarget, xRes
Const FULL_ACCESS = 2032127

strShareTarget = &quot;D:\Folder&quot;
strShareServer = &quot;fileserver&quot;
strShareName = &quot;Имя_ресурса&quot;
On Error Resume Next
Set objWMI = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot; &amp; strShareServer &amp; &quot;\root\CIMV2&quot;)
If Err.Number = 0 Then
    xRes = objWMI.Get(&quot;Win32_Share&quot;).Create(strShareTarget, strShareName, 0)
    If xRes = 0 Then
        Set objSecSettings = objWMI.Get(&quot;Win32_LogicalShareSecuritySetting.Name=&#039;&quot; &amp; strShareName &amp; &quot;&#039;&quot;)
        If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then
            If Not IsNull(objSD.DACL) Then
                For Each objACE In objSD.DACL
                    objACE.AccessMask = FULL_ACCESS
                Next
                Set objACE = Nothing
                xRes = objSecSettings.SetSecurityDescriptor(objSD)
                Select Case xRes
                    Case 0: xRes = &quot;Успешное завершение.&quot;
                    Case 2: xRes = &quot;Отсутствует доступ к необходимой информации.&quot;
                    Case 9: xRes = &quot;Для выполнения операции недостаточно полномочий.&quot;
                    Case 21: xRes = &quot;Заданы недопустимые значения параметров.&quot;
                    Case Else: xRes = &quot;Неизвестная ошибка с кодом: &quot; &amp; xRes
                End Select
            Else
                xRes = &quot;Список управления доступом к ресурсу &quot; &amp; UCase(strShareName) &amp; &quot; пуст.&quot;
            End If
        Else
            xRes = &quot;Не удалось прочитать дескриптор безопасности ресурса &quot; &amp; UCase(strShareName)
        End If
        Set objSD = Nothing
        Set objSecSettings = Nothing
    Else
        xRes = &quot;Ошибка &quot; &amp; xRes &amp; &quot; при создании ресурса общего доступа &quot; &amp; UCase(strShareName)
    End If
    WScript.Echo xRes
Else
    WScript.Echo &quot;Ошибка &quot; &amp; CStr(Err.Number) &amp; vbNewLine &amp; Err.Description
    Err.Clear
End If
Set objWMI = Nothing
WScript.Quit 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Dmitrii)]]></author>
			<pubDate>Mon, 31 Jan 2011 05:48:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44638#p44638</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Создать и расшарить папку на удалённом сервере]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=44562#p44562</link>
			<description><![CDATA[<p>Как проще всего создать и расшарить папку на удалённом сервере ?<br />Я написал вот такой скрипт, на мне не совсем нравится в нём процедура расшаривания папки (нужно чтобы everyone быть full access )<br />Подскажите, всё ли правильно я делаю ?</p><div class="codebox"><pre><code>&#039;====Настройки скрипта========
strServerName = &quot;server01&quot;
strFolderPath = &quot;\\server01\D$\Share&quot;
srtRemoteFolderPath = &quot;D:\Share\&quot;
&#039;=============================

strFolderName = Trim(InputBox(&quot;Введите название папки&quot;, &quot;Создание новой папки на сервере&quot;))

&#039; Создаём папку на сервере
Set objFSO   = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
strFullFolderPath = objFSO.BuildPath(strFolderPath, strFolderName)
If objFSO.FolderExists(strFullFolderPath) Then
 WScript.Echo &quot;Папка: &#039;&quot;&amp; strFolderName &amp;&quot;&#039; уже существует.&quot; &amp; vbNewLine &amp; _
                     &quot;Скрипт завершает свою работу.&quot;
    Wscript.Quit 0
Else
    objFSO.CreateFolder strFullFolderPath
End If

&#039;Расшариваем папку в правами Everyone = Full Access
Const FULL_ACCESS = 2032127
Const ACCESS_ALLOWED = 0

Set objWMI = GetObject(&quot;winmgmts:\\&quot; &amp; strServerName &amp; &quot;\root\cimv2&quot;)
      Set objTrustee = objWMI.Get(&quot;Win32_Trustee&quot;).SpawnInstance_
      objTrustee.Properties_.Item(&quot;SID&quot;) = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
      Set objACE = objWMI.Get(&quot;Win32_Ace&quot;).SpawnInstance_
      objACE.AccessMask = FULL_ACCESS
      objACE.AceFlags = 3
      objACE.AceType = ACCESS_ALLOWED
      objACE.Trustee = objTrustee
      Set objSD = objWMI.Get(&quot;Win32_SecurityDescriptor&quot;).SpawnInstance_()
      objSD.DACL = Array(objACE)
      Set objShare = objWMI.Get(&quot;Win32_Share&quot;)
      intResult = objShare.Create(srtRemoteFolderPath &amp; strFolderName, strFolderName, 0, Null, Null, Null, objSD)

WScript.Echo &quot;Папка: &#039;&quot;&amp; strFolderName &amp;&quot;&#039; успешно создана и расшарена&quot;
Wscript.Quit 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rialto)]]></author>
			<pubDate>Sat, 29 Jan 2011 18:31:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=44562#p44562</guid>
		</item>
	</channel>
</rss>
