本帖最后由 我是MT 于 2015-9-2 07:53 编辑
这里是开机启动的的代码:
[C#] 纯文本查看 复制代码 /// <summary>
/// 开机启动
/// </summary>
private void SetAutoStar()
{
try
{
string filepath = Assembly.GetExecutingAssembly().Location;
string runName = Path.GetFileNameWithoutExtension(filepath);
RegistryKey hkml = Registry.LocalMachine;
RegistryKey runKey = hkml.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
runKey.SetValue("xcgk", "\"" + filepath + "\" -AutoRun");
runKey.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这里是删除开机启动项,为啥子不起作用呢?
[C#] 纯文本查看 复制代码 /// <summary>
/// 取消开机启动
/// </summary>
public void CancleAutoRun()
{
try
{
string filepath = Assembly.GetExecutingAssembly().Location;
string runName = Path.GetFileNameWithoutExtension(filepath);
RegistryKey hkml = Registry.LocalMachine;
RegistryKey runKeys = hkml.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
runKeys.DeleteValue(runName);
}
catch
{ }
}
添加注册表成功了,删除注册表却失败了,难道是代码不对吗?
之前还用的好好的。
64bit 系统貌似这个路径重定向了。这个删除的代码在32位有用,我装了64位之后,无效了。
64位的程序的注册表还在: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer 32位的程序的注册表而是在: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer
如何做到32位和64位通用呢,我删除的时候是给出了具体的路径,这个路径如何用变量来表示呢。
|