【发布时间】:2015-05-01 20:07:03
【问题描述】:
我这辈子都想不通。我创建了一个相当大的 C# 应用程序,它基本上运行一堆单独的组件并定期重启机器。这个应用程序的想法基本上是自动化我们公司的流程。所以我之前让它工作,以便在机器重新启动后,它会在一个帐户登录后启动。
无论如何,该应用程序将不再在启动时启动。请参阅下面的代码,我已经实现了向注册表中的 Run 键添加条目:
RegistryKey winStartUpKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
string shieldStartVal = (string)winStartUpKey.GetValue("SHIELDCustomizer");
if (shieldStartVal == null)
{
string currentName = System.AppDomain.CurrentDomain.FriendlyName;
string currentDIR = Directory.GetCurrentDirectory() + @"\" + currentName;
RegistryKey startUpKey = Registry.LocalMachine.OpenSubKey
(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", RegistryKeyPermissionCheck.ReadWriteSubTree);
startUpKey.SetValue("SHIELDCustomizer", "\"" + currentDIR + "\"", RegistryValueKind.String);
}
上面的代码过去一直有效。而且我已经验证了启动条目实际上已添加到注册表中。当我将注册表中的路径复制到运行提示符中并单击“确定”时,应用程序启动时没有问题。
我对代码做了一些小改动(相当冗长的代码,不知道从哪里开始发布此代码),我无法想象这会对应用程序是否在启动时启动产生影响。我所有的图像和文件都已作为资源添加到项目中。我真正能找到的唯一参考概述了这种类似的场景是在这个论坛上:application won't start on startup after adding a notifyicon 实际上看起来与我当前的设置不相关,因为我的 notifyIcon 对象和属性是使用 Visual Studio 添加的,而我没有手动编码。
当正确的条目在注册表中时,有没有人知道什么可能导致程序在启动时无法启动?我知道我没有提供太多代码,如果我可以提供任何其他信息,请告诉我,我很乐意这样做。
非常感谢您!
【问题讨论】:
-
您是否做过需要管理权限的事情?更新您的防病毒软件可能会对应用程序进行沙盒处理?
-
或者您是否需要使用在您的应用程序尝试使用它时没有启动的服务?
-
你的 AV 屏蔽了吗?....
-
它是什么样的 C# 应用程序? Winforms / 控制台 / WPF ?
-
如何检查它是否运行?会不会是它运行了,但立即终止了?