C# 如果用户不是管理员组成员,如何禁用所有表单上的更新/删除按钮?

C# 如果用户不是管理员组成员,如何禁用所有表单上的更新/删除按钮?,c#,winforms,C#,Winforms,如果用户不是管理员组的成员,我想在windows应用程序中禁用窗体上的所有按钮。我已经创建了一个数据库,其中包含一个表,其中的用户信息包含以下字段 用户名、密码和用户组。您最好创建不同的数据库用户,这些用户可以/不能在数据库中执行这些操作,因为使用window spy类型的程序很容易重新启用按钮。这里有一个链接,指向true author创建一个简单的应用程序来重新启用禁用的控件(为了防止链接损坏,它的本质是找到控件的句柄并调用EnableWindow,向其发送WM_enable并将其WM_di

如果用户不是管理员组的成员,我想在windows应用程序中禁用窗体上的所有按钮。我已经创建了一个数据库,其中包含一个表,其中的用户信息包含以下字段
用户名、密码和用户组。

您最好创建不同的数据库用户,这些用户可以/不能在数据库中执行这些操作,因为使用window spy类型的程序很容易重新启用按钮。这里有一个链接,指向true author创建一个简单的应用程序来重新启用禁用的控件(为了防止链接损坏,它的本质是找到控件的句柄并调用EnableWindow,向其发送WM_enable并将其WM_disabled样式设置为false)。另见本文:

这里我要指出的主要问题是,这些程序与你的应用程序无关。如果我是一个有黑客倾向的用户,我发现你保护低级别用户不进行数据库更新的唯一方法是禁用更新按钮,我只会使用一个应用程序强制再次启用你的按钮,然后单击它。这种级别的安全重要性应该在其他地方进行管理

如果您只想拥有两个db用户,然后滚动您自己的用户表,那么您应该使用连接字符串中的只读db用户启动应用程序并进行登录,如果用户是管理员,则更改连接字符串以使用可以更新的db用户

要明确的是,当我说“db user”时,我指的是sql server的用户/登录名,如
sa
,我不是指“用户表中代表使用您的peogram的人的条目”。一个登录名将具有db\u datareader特权,另一个登录名将具有db\u所有者等(sql server术语)

如果您仍然迫切需要更改按钮,请参阅此处,了解可以枚举表单上所有按钮的技术:


保持按钮名称的一致性,然后您可以通过包含“update”的名称来确定它是否是更新按钮“

因此,我应该设计一个新的数据库和应用程序以实现安全性,并将这两个应用程序集成在一起。这就是你的意思?不,我不是这个意思。我的意思是,除了禁用按钮之外,还要用其他方法来保护你的安全。如果你想禁用按钮,但不要让它成为你唯一的安全