我正在爲一個小型辦公室(最多4個用戶)申請一個應用程序,所以我決定設置一個網絡共享文件夾並將我的Access數據庫放在那裏,併爲所有用戶提供訪問該網絡共享的權限。保護網絡共享訪問數據庫
問題是當我共享數據庫文件夾時,它暴露給所有人,所以任何有權訪問網絡的人都可以打開共享文件夾並刪除共享數據庫。
問題:我該如何保護它免於刪除?這樣即使有人連接到網絡並訪問數據庫文件.accdb,他也無法刪除它!
我正在爲一個小型辦公室(最多4個用戶)申請一個應用程序,所以我決定設置一個網絡共享文件夾並將我的Access數據庫放在那裏,併爲所有用戶提供訪問該網絡共享的權限。保護網絡共享訪問數據庫
問題是當我共享數據庫文件夾時,它暴露給所有人,所以任何有權訪問網絡的人都可以打開共享文件夾並刪除共享數據庫。
問題:我該如何保護它免於刪除?這樣即使有人連接到網絡並訪問數據庫文件.accdb,他也無法刪除它!
很簡單,你可以設置共享文件夾的權限,因爲所有的,你可以設置對數據庫文件的權限..
在這裏,我會告訴你如何做一個文件夾,並在同一推移對於一個文件,但是如果您對文件夾設置了權限,則不再需要在數據庫文件上設置權限,因爲它位於該文件夾中。
我會假設你已經共享文件夾「每個人」
左鍵單擊該文件夾 - >屬性
2-點擊安全標籤上 - - >選擇 「每個人」 - >點擊高級
3-單擊更改權限( 「Everyone」 組)
4-單擊Edit(對於 「Everyone」 組)
檢查所有箱中的 「允許」,除了完全控制,刪除子文件夾和文件,並刪除
6 - CLick好吧,你完成了,每個人都可以從數據庫中讀取/寫入,但沒有人有權刪除它..
要做到這一切在vb.net,你需要兩個命令,共享文件夾後,你可以使用.RemoveAccessRule
刪除刪除權限
此代碼自動完成這一切,它的股票與大家(或者你想誰),並刪除刪除文件夾權限
Imports System.Management
Imports System.Security.AccessControl
Imports System.IO
Imports System
Public Class Form1
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Try
Dim PermissionsList As New List(Of SharePermissionEntry)
'Create a new permission entry for the Everyone group and specify that we want to allow them Read access
Dim PermEveryone As New SharePermissionEntry(String.Empty, "Everyone", SharedFolder.SharePermissions.Read, True)
Dim PermUser As New SharePermissionEntry("", "Everyone", SharedFolder.SharePermissions.FullControl, True)
'Add the two entries declared above to our list
PermissionsList.Add(PermUser)
PermissionsList.Add(PermEveryone)
'Share the folder as "Test Share" and pass in the desired permissions list
Dim Result As SharedFolder.NET_API_STATUS = _
SharedFolder.ShareExistingFolder("Test Share", "This is a test share", "C:\Folder", PermissionsList)
Dim FolderPath As String = "C:\Folder" 'Specify the folder here
Dim UserAccount As String = "Everyone" 'Specify the user here
Dim FolderInfo As IO.DirectoryInfo = New IO.DirectoryInfo(FolderPath)
Dim FolderAcl As New DirectorySecurity
FolderAcl.AddAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow))
FolderAcl.RemoveAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.DeleteSubdirectoriesAndFiles, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow))
FolderAcl.RemoveAccessRule(New FileSystemAccessRule(UserAccount, FileSystemRights.Delete, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow))
FolderInfo.SetAccessControl(FolderAcl)
'Show the result
If Result = SharedFolder.NET_API_STATUS.NERR_Success Then
MessageBox.Show("Share created successfully!")
Else
MessageBox.Show("Share was not created as the following error was returned: " & Result.ToString)
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Class
不要忘記添加引用System.Management
而System.Management.Instrumentation
,並添加這些模塊SharePermissionEntry.vb而SharedFolder.vb項目
5星級的答案,非常感謝! –
給他們讀/寫/執行權限,但不能修改或完全控制。如果你在窗口,右鍵單擊,屬性,安全選項卡 – Scotch
我已編輯你的標題。請參閱「[應該在標題中是否包含」標籤「](http://meta.stackoverflow.com/questions/19190/)」,其中共識是「不,他們不應該」。 –