我想执行以下操作,但是当我编译并运行源代码时,文件后来没有锁定。
有人能解决这个问题吗?
以下是源代码:
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
答案 0 :(得分:0)
因为你的问题遗漏了一些信息。
block/unblock
个可执行文件(*.exe
)button_click
AddFileSecurity(fileloc,domainAndUserName,FileSystemRights.ExecuteFile,AccessControlType.Deny)
fileloc
是aboslute/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
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