c#检查程序是否在启动时运行
本文关键字:运行 启动 检查程序 是否 | 更新日期: 2023-09-27 18:13:41
我想检查某个程序是否在计算机启动时运行,我访问了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启动时运行,但是当我通过Task manager
禁用该程序启动时(并且它的状态变为disabled
),下一次我运行上面的代码时,结果仍然是True
,即使该程序不再是启动程序的一部分。
这让我得出一个简单的结论,当windows任务管理器禁用启动程序时,它不会删除它在注册表项中的键,但它会改变它的另一个值,但我无法找出改变的值是什么。
我希望有人能帮忙。
谢谢。
因为在taskmgr中禁用它不会删除
中的条目 CurrentUser'SOFTWARE'Microsoft'Windows'CurrentVersion'Run
,而不是将CurrentUser'SOFTWARE'Microsoft'Windows'CurrentVersion'Explorer'StartupApproved'Run
中的对应值从0200 0000000...
设置为0300 0000 xxxxx....
稍微扩展一下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 000 000 000…"启用——>
- 任何其他->禁用