Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 阻止用户打开“开始”菜单_C# - Fatal编程技术网

C# 阻止用户打开“开始”菜单

C# 阻止用户打开“开始”菜单,c#,C#,我有一个程序,可以防止用户打开taskmanager和开始菜单。我已经添加了禁用taskmanager的代码,现在需要阻止用户通过键盘上的windows键启动“开始”菜单。有人有什么想法吗?据我所知,你可以减少用户的访问权限,让他们在“开始”菜单上除了关机/注销外几乎什么都没有 但是,出于道德原因,没有内置的方法来禁用“开始”菜单 据我所知,您可以减少用户的访问权限,使他们在“开始”菜单上除了关机/注销外几乎什么都没有 但是,出于道德原因,没有内置的方法来禁用“开始”菜单 我建议您使用一个策略,

我有一个程序,可以防止用户打开taskmanager和开始菜单。我已经添加了禁用taskmanager的代码,现在需要阻止用户通过键盘上的windows键启动“开始”菜单。有人有什么想法吗?据我所知,你可以减少用户的访问权限,让他们在“开始”菜单上除了关机/注销外几乎什么都没有


但是,出于道德原因,没有内置的方法来禁用“开始”菜单

据我所知,您可以减少用户的访问权限,使他们在“开始”菜单上除了关机/注销外几乎什么都没有


但是,出于道德原因,没有内置的方法来禁用“开始”菜单

我建议您使用一个策略,但如果您确实需要以编程方式执行此策略,您可以尝试以下方法,但不确定此策略支持哪些版本的Windows

您必须搜索作为任务栏的进程,然后必须搜索它的所有线程才能找到“开始”按钮。这篇CodeProject文章展示了如何做到这一点:


您可能还需要创建一些键盘挂钩,以禁用用户通过键盘组合打开“开始”菜单。

我建议使用策略,但如果您确实需要以编程方式执行此操作,则可以尝试以下操作:不确定此操作支持的Windows版本

IntPtr trayHandle = FindWindow("Shell_TrayWnd", null);
IntPtr buttonHandle = FindWindowEx(trayHandle, IntPtr.Zero, "Button", IntPtr.Zero);
bool result = EnableWindow(buttonHandle, false);
您必须搜索作为任务栏的进程,然后必须搜索它的所有线程才能找到“开始”按钮。这篇CodeProject文章展示了如何做到这一点:

您可能还需要创建一些键盘挂钩,以禁用用户通过一些键盘组合打开“开始”菜单

IntPtr trayHandle = FindWindow("Shell_TrayWnd", null);
IntPtr buttonHandle = FindWindowEx(trayHandle, IntPtr.Zero, "Button", IntPtr.Zero);
bool result = EnableWindow(buttonHandle, false);
这三个函数是WinAPI: ,及

这三个函数是WinAPI:

,和。

这听起来像是集团策略的工作,而不是代码……难以置信的是,这个问题只是由另一个用户提出的。请看这里:执行摘要:在C语言中不可能,但应用程序将完全按照您的要求执行。我不需要完全相同的代码。我想要任何解决这个问题的办法。@Mr.DDD:那没有任何意义。如果你问,如果没有任何代码,这个应用程序怎么能做到,那么答案是我不知道这个应用程序是如何做到的。我假设这是通过动态修改explorer.exe中的资源实现的,但是作者没有共享他的源代码。可以说,昨天我花了很长时间从各种不同的角度研究这个问题,但它在Windows7中不起作用。如果您使用的是早期版本,当然是可能的。请使用gpedit.msc编辑策略。有很多设置供您尝试:-这听起来像是组策略的工作,而不是代码…难以置信的是,这个问题只是由不同的用户提出的。请看这里:执行摘要:在C语言中不可能,但应用程序将完全按照您的要求执行。我不需要完全相同的代码。我想要任何解决这个问题的办法。@Mr.DDD:那没有任何意义。如果你问,如果没有任何代码,这个应用程序怎么能做到,那么答案是我不知道这个应用程序是如何做到的。我假设这是通过动态修改explorer.exe中的资源实现的,但是作者没有共享他的源代码。可以说,昨天我花了很长时间从各种不同的角度研究这个问题,但它在Windows7中不起作用。如果您使用的是早期版本,当然是可能的。请使用gpedit.msc编辑策略。有很多设置供您试验:-D'抱歉,这是配置,因此与编程无关,因此不属于堆栈溢出。询问堆栈溢出姐妹站点,很抱歉,但这是配置,所以与编程无关,所以不属于堆栈溢出。根据我在回答中链接到的文章,Ask on Stack Overflows姐妹网站可能不再适用于Windows Vista,也可能不适用于Win7。虽然我还没有尝试过,但这几乎是通过编程实现的唯一方法——你可能需要修改其他操作系统的代码。不过,我自己不会这么做:-P以这种方式与用户打交道是令人讨厌的。使用gpedit.msc是正确执行此操作的方法。@Jaroslav:没有隐藏/禁用“开始”菜单的组策略设置。@Cody-您在另一篇文章中说过,完全禁用compined taskbar时有三种方法。你能解释一下吗???@Cody:不完全是,不。有一整节专门讨论开始菜单和任务栏,你可以在那里关闭开始菜单项,基本上使开始按钮无用。根据我在回答中链接到的文章,这可能不再适用于Windows Vista,也可能不适用于Win7。虽然我还没有尝试过,但这几乎是通过编程实现的唯一方法——你可能需要修改其他操作系统的代码。不过,我自己不会这么做:-P以这种方式与用户打交道是令人讨厌的。使用gpedit.msc是正确执行此操作的方法。@Jaroslav:
没有隐藏/禁用“开始”菜单的组策略设置。@Cody-您在另一篇文章中说过,完全禁用compined taskbar时有三种方法。你能解释一下吗???@Cody:不完全是,不。有一整节专门讨论“开始”菜单和任务栏,你可以关闭“开始”菜单项,基本上使“开始”按钮无效。那篇文章中提出的解决方案在Windows 7中不起作用。@Cody:我相信你的话,我没有权限尝试Win7,这是一种相当可怕的方式。是的,我昨天花了太多时间尝试了,问了一个类似的问题。我同意这是一个非常错误的安全政策尝试,令人沮丧的是,人们对你帮助他们的尝试没有更多的感激。这仍然是一个很好的答案,只是一个值得注意的警告。那篇文章中提出的解决方案在Windows 7中不起作用。@cody:我相信你的话,我没有访问Win7的权限来尝试,而且这是一种相当可怕的做事方式。是的,我昨天花了太长时间来尝试它,因为我问了一个类似的问题。我同意这是一个非常错误的安全政策尝试,令人沮丧的是,人们对你帮助他们的尝试没有更多的感激。这仍然是一个很好的答案,只是一个值得注意的警告。