저는 작업중인 프로그램에 대한 시작 프로그램/업데이트 프로그램이있는 방법을 찾아 내려고했습니다. 사람들이 등록하게하고 등록하지 않고 주 프로그램을 실행하게하지 않을 것입니다. 그래서, 나는 launcher.exe와 main.exe를 가지고 있고 main.exe를 엽니 다. 실행기를 종료하고 열어야합니다. 간단한 ping/pong 타입 거래를하기 위해 소켓을 사용할 예정 이었지만, vb.net에서만 사용했기 때문에 소켓이 vb.net에서 내 얼굴을 부수고 있습니다. 텍스트의 벽 : 나는 "비밀"명령 줄 매개 변수를 사용하는 것이 좋습니다 것VB.NET 주 EXE가 열렸을 때 '실행 프로그램'을 강제 실행 하시겠습니까?
답변
에 대한
죄송합니다. 실행기 홈페이지를 시작하면
, 그것을 실행하는 것
C:\Path\Main -Launched
경우, 명령 줄 매개 변수 (도스 프롬프트에서 또는 유형 "메인") 사용자 Main.exe를 더블 클릭 보이지 않을거야. 따라서 Main에서 명령 행에 -Launched
매개 변수가 없으면 Launcher를 시작한 다음 종료합니다. 매개 변수가 -Launched
이면 실행기 응용 프로그램에 의해 시작되었다고 간주하고 계속할 수 있습니다.
이의 유일한 단점은 해커가 Main2.exe에 Main.exe를 이름을 바꾼 다음 명령 줄을 표시 Main.exe를 자신의 버전을 설치할 수있을 것입니다 다음 메인 2를 시작합니다. 이렇게하면 "비밀"인 명령 줄 매개 변수를 볼 수 있습니다. 대부분의 해커들조차도이 문제에 신경을 쓰지 않으며 해커가 아닌 사람들은 매개 변수를 절대 보지 않습니다. 당신이 걱정하는 경우, 당신은 대신이 작업을 수행 할 수 있습니다
(참고 :. 테스트하지, 여기에 약간의 인쇄상의 오류가있을 수 있습니다)
' In Launcher:
' ...
Dim Param as string = Now.ToString("MMddhhmmss").GetHashCode.ToString
' Now launch Main, using Param as the command-line parameter
' ...
' Somewhere in Main, probably in the main form's Form1_Load:
' ...
Dim H As Integer = 0
Integer.TryParse(Command, H)
Dim T As Date = Now
Dim Launched As Boolean = False
For I As Integer = 0 To 30
Dim X As Integer = T.AddSeconds(-I).ToString("MMddhhmmss").GetHashCode
If X = H Then
Launched = True
Exit For
End If
Next I
If Not Launched Then
' Assume that user launched program directly
' Start Launcher, then exit
End If
' The program was started from Launcher. Continue.
' ...
이를 코드는 Launcher가 Main을 시작할 때 Main의 코드가 30 초 이내에 실행되기 시작한다고 가정합니다. (이것이 틀린 것으로 판명되면 I
루프의 최대 값을 늘려야 할 수도 있습니다.)
그 아이디어를 사용하고 매력처럼 작동합니다. 나는 해커가별로 아쉽지 않으므로 완벽합니다. 만약 내가 걱정했다면, 나는 VB.Net에서 이것을하지 않을 것이다; D 도움에 감사 : – Henzl0l
나는 모든 것을 뒤집을 것입니다. 메인 프로그램을 시작하고 업데이트 프로그램으로 게임을 전환시키지 않고 "메인"아이콘과 프로그램 이름을 업데이터에 지정하고 시작시 실제 메인 앱을 확인하고 업데이트하십시오. 그런 다음 종료하기 전에 실제 앱을 시작합니다. 이렇게하면 두 개가 아닌 한 개의 스위치 만 있습니다.
Savy 사용자는 실제 .exe 파일을 직접 찾을 수는 있지만 대다수의 파일은 프로그램 파일 폴더에 숨겨진 다른 파일 일뿐입니다.
또 다른 옵션은 주 프로그램을 .exe 파일 대신 dll (클래스 라이브러리 프로젝트)으로 만들고 Assembly.LoadFile()
함수를 사용하여 시작한 후 동적으로로드하는 것입니다. 이 DLL에 대한 진입 점이 일관성을 유지하는 한 안전하며 사용자가 업데이트 프로그램을 사용하지 않고도 주 프로그램을 직접 실행할 수는 없습니다.
@@ Joel, 나는 DLL 아이디어를 정말 좋아한다. 기본적으로 전체 프로그램은 DLL에있을 수 있으며 .EXE는 업데이트하고 실행하는 것 외에는 아무 것도하지 않습니다. 나는 그 생각을했으면 좋았을 텐데. –
- 1. 주 스레드에서 강제 코드 실행
- 2. JGNAT 프로그램을 실행 하시겠습니까?
- 3. 프로그램을 서비스로 실행 하시겠습니까?
- 4. 인수를 사용하여 프로그램을 실행 하시겠습니까?
- 5. moviePlaybackComplete 메서드 강제 실행
- 6. 모노에서 VB.NET 실행
- 7. 콘솔 문화권 강제 실행
- 8. VB.NET - 직접 실행 창
- 9. AlertDialog에서 소프트 키보드 강제 실행
- 10. 이벤트 중 강제 실행 메서드
- 11. 키보드를 사용하지 않을 때 자동으로 명령이나 프로그램을 실행 하시겠습니까?
- 12. 원 클릭으로 PyDev에서 내 프로그램을 실행 하시겠습니까?
- 13. 특정 양의 실제 메모리에서 프로그램을 실행 하시겠습니까?
- 14. 명령 줄에서 콘솔 응용 프로그램을 실행 하시겠습니까?
- 15. Windows 응용 프로그램을 서비스로 실행 하시겠습니까?
- 16. commons-exec : 시스템 PATH에서 프로그램을 실행 하시겠습니까?
- 17. 파이썬을 사용하여 다른 프로그램을 실행 하시겠습니까?
- 18. VB.net 메모리로 다운로드 및 실행
- 19. mainThread를 다시 실행 하시겠습니까?
- 20. 완료시 windows mobile cab file 실행 주 실행
- 21. vb.net vs2008 빈 실행 가능
- 22. 특정 프로세스가 실행 중일 때 백그라운드에 내 프로그램을 보내는 방법
- 23. PHP는 쿼리를 실행 하시겠습니까?
- 24. 32 비트 모드에서 Perl을 강제 실행
- 25. CScript로 Javascript를 실행 하시겠습니까?
- 26. exe가 서버의 터미널 세션에서 실행 중인지 확인하는 방법
- 27. 화면이 잠겨있을 때 AutoHotkey 스크립트를 실행 하시겠습니까?
- 28. 작업자 스레드의 주 스레드에서 코드 실행
- 29. 궤도에있는 서버를 실행 하시겠습니까?
- 30. -m64 -mcmodel = small 일 때 스택을 32 비트로 강제 실행
그래서 실제 질문은 무엇입니까? –
하하, 내가 이것을 썼을 때 나는 상당히 피곤했다. '런처 (launcher)'앱에서 실행될 때 메인 앱만 실행하는 방법이 있는지 궁금합니다.올바른 방향으로 조금 움직이는 것이 좋습니다 :) – Henzl0l