因此,我被要求找出一种方法,使包含敏感数据的程序更加安全,因为我们的工作人员很高兴并且可能会使数据面临风险。
我已经加载了Visual Studio for C#,并找到了获得前面提到的应用程序的好方法。然后抓住主窗口并附上我自己的面板。该面板现在基本上可以像盲人一样在不使用时覆盖应用程序。
现在,我有一个在系统托盘中运行的程序,等待敏感数据出现在屏幕上,我的小面板劫持了整个窗口,现在看不到任何东西。
现在我的问题是,当我的面板被攻击时,我试图锁定的应用程序的主窗口似乎只是崩溃。我猜这是因为我的面板和应用程序属于不同的过程。
无论如何,我可以在这里做一些建议。
这是我的面板类。
class LockingPanel : System.Windows.Forms.Panel
{
private IntPtr prn;
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
public void SetParent(IntPtr parent)
{
prn = parent;
SetParent(this.Handle, prn);
}
public IntPtr GetParent() {
return prn;
}
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(IntPtr hWnd, ref RECT Rect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left; // x position of upper-left corner
public int Top; // y position of upper-left corner
public int Right; // x position of lower-right corner
public int Bottom; // y position of lower-right corner
}
public void FillParent()
{
RECT rtc = new RECT();
GetWindowRect(prn, ref rtc);
this.Location = new System.Drawing.Point(0, 0);
this.Size = new System.Drawing.Size(rtc.Right, rtc.Bottom);
}
任何人都对我如何解决这个问题有了更好的了解,或者至少让我的面板会让应用程序崩溃。