Nant: разрешение файла изменения

Есть также кое-что, что вы также можете попробовать. Это может быть не профессионально, но это работает. Разделите изображения на две половины. Нарисуйте первую половину на одной из панелей и вторую половину на другой панели. Обязательно импортируйте System.IO в ваш проект.

Код для разбиения выглядит следующим образом:

Imports System.IO
...
Public Function SplitImage(ByVal imgpath As String) As Image()
    Dim img As Image = Image.FromFile(imgpath)
    Dim bmp As Bitmap = DirectCast(img, Bitmap)
    Dim i As Integer = bmp.Height / 2
    Dim image1 As Bitmap = New Bitmap(bmp.Width, i)
    Dim image2 As Bitmap = New Bitmap(bmp.Width, i)
    Dim yPos As Integer = 0
    For x As Integer = 0 To image1.Width - 1
        For y As Integer = 0 To image1.Height - 1
            image1.SetPixel(x, y, bmp.GetPixel(x, y))
            yPos = y
        Next
    Next
    yPos += 1
    Dim ycount As Integer = 0
    For x As Integer = 0 To image2.Width - 1
        For y As Integer = yPos To bmp.Height - 1
            If ycount = i Then
                ycount -= 1
            End If
            image2.SetPixel(x, ycount, bmp.GetPixel(x, y))
            ycount += 1
        Next
        ycount = 0
    Next
    Dim ms As MemoryStream = New MemoryStream
    Dim ms1 As MemoryStream = New MemoryStream
    image1.Save(ms, Imaging.ImageFormat.Png)
    image2.Save(ms1, Imaging.ImageFormat.Png)
    Dim returnedImage(2) As Image
    returnedImage(0) = image1
    returnedImage(1) = image2
    Return returnedImage
End Function

Создайте две формы в вашей форме (Panel1 и Panel2) и кнопку (Button1). Разместите две панели так, как вы хотите, установите для свойства BackgroundImageLayout панелей значение StretchImage. Затем из вашего кода вы можете вызвать функцию следующим образом: из события нажатия кнопки:

Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim pic() As Image = SplitImage("C:\xxxx.png")
    Panel1.BackgroundImage = pic(0)
    Panel2.BackgroundImage = pic(1)
End Sub

Для получения дополнительной информации о классе Bitmap перейдите по этой ссылке Bitmap Class [117 ]

8
задан Julien N 24 October 2008 в 12:19
поделиться

3 ответа

Необходимо запустить программу CACLS в окнах для предоставления разрешений в файлы и папки. От Nant можно сделать это с ИСПОЛНИТЕЛЬНОЙ задачей.

Попробуйте блок тега как:

<exec program="cacls">
    <arg value="*" />
    <arg value="/G IIS_WPG:F" />
</exec>
4
ответ дан 5 December 2019 в 10:45
поделиться

Неисправность @Jeff Ай... Ваше предложение является правильным решением, но параметры... опасны :).

На dev компьютерах я зарегистрирован как администратор, и я попробовал Ваше предложение cmd.

  • Это заменяет все полномочия, приведенные в порядок для установки только тех определенных в команде (так, после того, как команда, получая доступ к файлам привела к "Доступу запрещен" даже с моим администраторским пользователем),
  • Это применялось на каталог C:\WINDOWS\, в то время как я назвал команду от wwwroot папки.:)

Так, после некоторых тестов правильная команда:

cacls [full folder path] /T /E /G IIS_WPG:F
  • /T: применяется на указанную папку и подпапки
  • /E: редактирует ACL вместо того, чтобы заменить его :)
7
ответ дан 5 December 2019 в 10:45
поделиться

Мы закончили тем, что писали нашу собственную задачу для этого с некоторым довольно прямым кодом:

[TaskName("addusertodir")]
public class AddUserToDirectorySecurity : Task
{
    [TaskAttribute("dir", Required=true)]
    public string DirPath { get; set; }

    [TaskAttribute("user", Required=true)]
    public string UserName { get; set; }

    protected override void ExecuteTask()
    {
        FileSystemAccessRule theRule1 = new FileSystemAccessRule(UserName, FileSystemRights.ListDirectory, AccessControlType.Allow);
        FileSystemAccessRule theRule2 = new FileSystemAccessRule(UserName, FileSystemRights.ReadAndExecute, AccessControlType.Allow);
        FileSystemAccessRule theRule3 = new FileSystemAccessRule(UserName, FileSystemRights.Read, AccessControlType.Allow);

        DirectorySecurity theDirSecurity = new DirectorySecurity();
        theDirSecurity.AddAccessRule(theRule1);
        theDirSecurity.AddAccessRule(theRule2);
        theDirSecurity.AddAccessRule(theRule3);
        Directory.SetAccessControl(DirPath, theDirSecurity);
    }
}

Затем можно записать nant сценарий, который загружает пользовательскую задачу и выполняется:

<loadtasks>
    <fileset>
        <include name="MyTask.dll"/>
    </fileset>
</loadtasks>

<addusertodir dir="MyDir" user="IIS_WPG"/>

Очевидно, это могло быть изменено для Ваших определенных правил, или Вы могли даже параметризовать это в задаче если Вы, так пожелайте. Мы предпочли это по использованию исполнительной задачи, поскольку это имеет нас немного больше управления полномочиями, которые применялись.

3
ответ дан 5 December 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: