C# 检查程序是否在启动时运行
我想检查某个程序是否在计算机启动时运行,为此我访问了C# 检查程序是否在启动时运行,c#,windows,registry,C#,Windows,Registry,我想检查某个程序是否在计算机启动时运行,为此我访问了win32 RegistryKey类: private void Form1_Load(object sender, EventArgs e) { bool ok = isOnRegistryStartup("iFilter"); MessageBox.Show(ok.ToString()); } private bool isOnRegistryStartup(string key)
win32 RegistryKey
类:
private void Form1_Load(object sender, EventArgs e)
{
bool ok = isOnRegistryStartup("iFilter");
MessageBox.Show(ok.ToString());
}
private bool isOnRegistryStartup(string key)
{
RegistryKey RegistryKey = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (registryKey.GetValue(key)!=null)
{
return true;
}
return false;
}
输出是True
,因为程序实际上是在windows启动时运行的,但是当我通过任务管理器禁用该程序启动时(它的状态变为disabled
),下一次运行上面的代码时,结果仍然是True
,即使该程序不再是启动程序的一部分
这让我得出了一个简单的结论,即当windows任务管理器禁用启动程序时,它不会删除注册表项中的项,但会更改它的另一个值..但我无法找出更改后的值是什么
我希望有人能帮忙
谢谢。因为在taskmgr上将其设置为禁用不会在中删除其条目
CurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
,而是在CurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
中设置相应的值,从0200000000…
到03000000xxxxx…
只是稍微扩展了一下Robert所说的内容检查以下注册表:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run32
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\Run32
对于Run和Run32注册表,规则似乎是:
- “02 00 00…”->已启用
- 任何其他->禁用
您是在查看HKEY\U当前用户
还是HKEY\U本地机器
?当我设置一个新键时,它也是通过编程方式完成的,使用SetValue()
方法,我在HKEY\u CURRENT\u USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
注册表中执行此操作…因此,我要在那里检查值检索@为什么我需要检查其他注册表路径?您没有提到这一点,因此我不知道您是否也负责将程序设置为启动。不过,为了安全,我还是会这么做。如果您可以控制安装和卸载,那么只需从添加的位置删除密钥即可。这个机制没有文档记录,可能无法在旧版或未来版本的Windows上运行,所以如果是我,我会将其作为服务安装。太棒了!您刚刚错过了一件事,这是explorer/StartUpApproved.:)