c# - 如何 - 从进程列表中取消列出我的程序..?

标签 c# winforms security process

好吧,这个问题可能听起来令人困惑,或者像许多其他问题一样;但让我进一步解释..

我正在制作一个个人安全程序,可以安全地存储密码和其他数字数据。我正在采取一些“就在你面前”的方法......

我想让它在只有我能结束程序的地方完成,我还在努力解决这部分问题;我不希望有人能够进入我的计算机并结束该过程..

那么,主要问题:我怎样才能隐藏我的程序,这样您就无法在不通过程序的情况下结束进程?或者,只是让它在你无法结束进程的地方,而不隐藏它..

我想还有一个问题是:这甚至可以实现吗?还是我只是在想一个疯子?我很可能是..

最佳答案

您可以使用来自 NTDLL.DLL 的未记录的 API 来防止您的进程终止:

typedef VOID ( _stdcall *_RtlSetProcessIsCritical ) (BOOLEAN NewValue,PBOOLEAN OldValue,BOOLEAN IsWinlogon );

void MakeProcessCritical() {
    HMODULE hNtDLL;
    _RtlSetProcessIsCritical RtlSetProcessIsCritical;

    hNtDLL = GetModuleHandle("ntdll.dll")
    RtlSetProcessIsCritical = (_RtlSetProcessIsCritical)GetProcAddress(hNtDLL, "RtlSetProcessIsCritical");

    if(RtlSetProcessIsCritical != NULL)
         RtlSetProcessIsCritical(1, 0, 0);
}

尝试结束您的进程将导致访问被拒绝消息。如果您的进程以某种方式被迫终止或自行终止,系统将停止运行并出现蓝屏死机。如果使用它,请确保在关闭进程之前调用 RtlSetProcessIsCritical(0, 0, 0)。

注意:我强烈反对对任何要出售的软件使用这种方法。

关于c# - 如何 - 从进程列表中取消列出我的程序..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816289/

相关文章:

c# - 使用 Pascal 调用约定调用 native 方法

c# - 为什么 Contains() 返回 false 但包装在列表中而 Intersect() 返回 true?

c# - 在所有屏幕上克隆窗口

php - sql 查询是否免受 googlebots 攻击(google sql 注入(inject))

java - 如何在 Android 中保护信息

c# - 如何在 UWP 中显示加载图像?

c# - 将数据库中的数据绘制图表并合并具有相同值的行

winforms - 删除 Rad 命令栏中的 "Add or Remove Buttons"

c# - 将大量单个字符绘制到 WinForms 控件

php - Symfony2 安全配置的 InvalidConfigurationException