시작할 때 시작할 프로그램을 어떻게 설정합니까?
CheckBox
Windows에서 앱을 시작하려는 경우 사용자가 설정할 수 있는 옵션 이있는 작은 응용 프로그램이 있습니다.
내 질문은 실제로 시작시 앱이 실행되도록 설정하는 방법입니다.
추신 : .NET 2.0에서 C #을 사용하고 있습니다.
선호하는 순서대로 몇 가지 옵션 :
- 현재 사용자의 시작 폴더에 추가하십시오. 이를 위해서는 앱을 실행하는 데 최소한의 권한이 필요하며 사용자에게 진행 상황에 대한 가장 많은 제어와 피드백을 제공합니다. 단점은 다음에 프로그램에서 해당 화면을 볼 때 이미 선택된 확인란을 표시할지 여부를 결정하는 것이 조금 더 어렵다는 것입니다.
HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run
레지스트리 키에 추가하십시오 . 여기서 유일한 문제는 레지스트리에 대한 쓰기 권한이 필요하다는 것인데, 항상 사용할 수있는 것은 아닙니다.- 사용자 로그인시 트리거되는 예약 된 작업 만들기
HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run
레지스트리 키에 추가하십시오 . 여기서 유일한 문제는 레지스트리에 대한 쓰기 권한이 필요하다는 것인데, 항상 사용할 수있는 것은 아닙니다.- Windows 서비스로 설정하십시오. 오직 당신 만이 경우이 작업을 수행 정말 그것을 의미, 그리고 당신이이 프로그램을 실행하려는 당신이 알고있는 모든 컴퓨터의 사용자를.
이 대답은 이제 더 오래되었습니다. 이 글을 쓴 이후로 Windows 10이 출시되어 Startup
폴더를 포함하여 시작 메뉴 폴더의 작동 방식이 변경되었습니다 . Windows가 이러한 위치에 사용하는 내부 데이터베이스를 참조하지 않고 해당 폴더에서 파일을 추가하거나 제거하는 것이 얼마나 쉬운 지 아직 명확하지 않습니다.
너무 빨리 응답 해주신 모든 분들께 감사드립니다. Joel, 옵션 2를 사용하고 현재 사용자의 "Run"폴더에 레지스트리 키를 추가했습니다. 관심있는 다른 사람을 위해 사용한 코드는 다음과 같습니다.
using Microsoft.Win32;
private void SetStartup()
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (chkStartUp.Checked)
rk.SetValue(AppName, Application.ExecutablePath);
else
rk.DeleteValue(AppName,false);
}
"HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run"에 레지스트리 항목을 만들 수 있습니다. Vista에서는 다르게 작동 할 수 있습니다. UAC로 인해 설정이 "가상화"될 수 있습니다.
Windows Vista, 7, 8, 10의 시작 프로그램에 프로그램을 추가하는 방법은 다음과 같습니다.
- 파일 경로
C:\Users\Bureau Briffault\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
(작업 관리자에서 볼 수 있음, 현재 사용자 로그인 성공시 실행 중, 관리자 권한 필요 없음)
C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
(작업 관리자에서 볼 수 있음, 모든 사용자 로그인 성공시 실행, 관리자 권한 필요)
- 레지스트리 경로
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
(작업 관리자에서 볼 수 있음, 현재 사용자 로그인 성공시 실행 중, 관리자 권한 필요 없음)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
(작업 관리자에 표시되지 않음, 현재 사용자 로그인 성공시 실행 중, 한 번의 로그인 시간 동안 실행 중, 관리자 권한 필요 없음)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
(작업 관리자에서 볼 수 있음, 모든 사용자 로그인 성공시 실행, 관리자 권한 필요)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
(작업 관리자에서 볼 수 없음, 모든 사용자 로그인 성공시 실행, 한 번의 로그인 시간 동안 실행, 관리자 권한 필요)
- 작업 스케줄러
Microsoft.Win32.Taskscheduler.dll
(작업 관리자에서 볼 수 없음, Windows 부팅시 실행, 관리자로 실행, 관리자 권한 필요)
응용 프로그램이 Windows가 시작될 때 시작되도록 설계된 경우 (사용자가 로그인 할 때가 아니라) 유일한 옵션은 Windows 서비스를 포함하는 것입니다. 애플리케이션을 서비스로 작성하거나 애플리케이션을 시작하기 위해서만 존재하는 간단한 서비스를 작성하십시오.
쓰기 서비스는 까다로울 수 있으며 특정 경우에 허용되지 않는 제한을 부과 할 수 있습니다. 일반적인 디자인 패턴 중 하나는 작업을 수행하는 서비스와 사용자에게 정보를 표시하기 위해 서비스와 통신하는 애플리케이션 프런트 엔드가있는 프런트 엔드 / 백 엔드 쌍입니다.
반면에 사용자 로그인으로 응용 프로그램을 시작하려면 Joel Coehoorn이 나열한 방법 1 또는 2를 사용할 수 있습니다.
Xepher Dotcom의 답변 외에도 Windows Startup의 폴더 경로는 다음과 같이 코딩되어야합니다.
var Startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
너무 쉬운 솔루션입니다.
추가하려면
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.SetValue("Your Application Name", Application.ExecutablePath);
제거
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.DeleteValue("Your Application Name", false);
/// <summary>
/// Add application to Startup of windows
/// </summary>
/// <param name="appName"></param>
/// <param name="path"></param>
public static void AddStartup(string appName, string path)
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.SetValue(appName, "\"" + path + "\"");
}
}
/// <summary>
/// Remove application from Startup of windows
/// </summary>
/// <param name="appName"></param>
public static void RemoveStartup(string appName)
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.DeleteValue(appName, false);
}
}
시작 폴더에 바로 가기를 추가하는 것이 가장 쉬운 방법이라는 것을 알았습니다. "Windows Script Host Object Model"및 "Microsoft.CSharp"에 대한 참조를 추가 한 다음이 코드를 사용했습니다.
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell();
string shortcutAddress = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + @"\MyAppName.lnk";
System.Reflection.Assembly curAssembly = System.Reflection.Assembly.GetExecutingAssembly();
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(shortcutAddress);
shortcut.Description = "My App Name";
shortcut.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
shortcut.TargetPath = curAssembly.Location;
shortcut.IconLocation = AppDomain.CurrentDomain.BaseDirectory + @"MyIconName.ico";
shortcut.Save();
Microsoft 네임 스페이스의 win32 클래스를 사용하여이 작업을 수행 할 수 있습니다.
using Microsoft.Win32;
using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.SetValue("aldwin", "\"" + Application.ExecutablePath + "\"");
}
참고 URL : https://stackoverflow.com/questions/674628/how-do-i-set-a-program-to-launch-at-startup
'IT TIP' 카테고리의 다른 글
버튼 클릭으로 테이블 행의 내용 가져 오기 (0) | 2020.11.02 |
---|---|
Android Studio에서 AVD 에뮬레이터 창의 크기를 조정하는 방법은 무엇입니까? (0) | 2020.11.02 |
다음 두 줄의 실행 사이에 지연 추가 (0) | 2020.11.02 |
체크 박스 서버 측 PHP가있는 새로운 Google recaptcha (0) | 2020.11.02 |
Redis 서버를 계속 실행하는 방법 (0) | 2020.11.02 |