如何在打开文件时锁定文件?

时间:2014-06-16 00:21:16

标签: vb.net visual-studio-2012

我想执行以下操作,但是当我编译并运行源代码时,文件后来没有锁定。

有人能解决这个问题吗?

以下是源代码:

    Private Sub CopyProtectFileButton_Click(sender As Object, e As EventArgs) Handles CopyProtectFileButton.Click

    Dim FileSt As FileStream = New FileStream("C:\Users\John\Desktop\NoteThisOne.txt", FileMode.Open, FileAccess.Write, FileShare.Write)

    Try
        FileSt.Lock(0, 64)
        Console.WriteLine("Locked")
    Catch Ex As Exception
        Console.WriteLine(Ex.Message)
    End Try
    FileSt.Close()


End Sub

1 个答案:

答案 0 :(得分:0)

因为你的问题遗漏了一些信息。

  • 我将以下代码用于block/unblock个可执行文件(*.exe
  • 请致电button_click
  

AddFileSecurity(fileloc,domainAndUserName,FileSystemRights.ExecuteFile,AccessControlType.Deny)

  • filelocaboslute/path/to/exefile.exe
  • domainAndUserName简称计算机的域名(yourComputerName/UserAccountName),可以从
  • 获取
  

domainAndUserName = Environment.UserDomainName& “\”& Environment.UserName

  Sub AddFileSecurity(ByVal fileName As String, ByVal account As String, _
    ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
    Try
      '"C:\Program Files\Google\Chrome\Application\chrome.exe"
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
        Dim accessRule As FileSystemAccessRule = New FileSystemAccessRule(account, rights, AccessControlType.Deny)
        fSecurity.AddAccessRule(accessRule)
        File.SetAccessControl(fileName, fSecurity)
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub
  • 这将打开任何EXE文件的打开
  • TO UNBLOCK
  

RemoveFileSecurity(fileLoc,domainAndUserName,   FileSystemRights.ExecuteFile,AccessControlType.Deny)

Sub RemoveFileSecurity(ByVal fileName As String, ByVal account As String, _
        ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
        fSecurity.RemoveAccessRule(New FileSystemAccessRule(account, rights, controlType))
        File.SetAccessControl(fileName, fSecurity)
 End Sub