만든 Windows 응용 프로그램에서 .vbs를 가리키는 배치 파일을 실행하려고합니다. 그것은 vbs 스크립트를 실행하지만 필요에 따라 레지스트리를 수정하지 않습니다. 그러나 배치 파일을 수동으로 실행하면 제대로 작동합니다. 문제가 될 수있는 것에 관해서는 누구도 통찰력을 갖고 있습니까? 내가 권한이라고 생각했는데, 배치 파일을 수동으로 클릭하거나 내 프로그램에서 열면 문제가되는 이유는 무엇입니까? 어쨌든, 배치 파일을 관리자 권한으로 실행하려고 수정했지만 온라인에서는 아무 것도 작동하지 않는 것 같습니다.배치 파일을 실행하는 CreateProcess
답변
CreateProcess가 배치 파일을 실행할 수있는 곳이 어디에도 없습니다. 배치 파일은 프로그램이 아니기 때문에 CreateProcess는 아무 것도 할 수 없습니다. CMD.exe는 배치 파일을 실행합니다.
귀하가이 BY TESTING 반환 값을 알려진 도움말에서반환 값 함수가 성공하면
을 문서
을 읽어 것
는, 반환 값은 0이 아닌
함수가 실패하면 반환 값은 0입니다. 확장 된 오류 정보를 얻으려면 GetLastError를 호출하십시오. 도움말
에서 또한
배치 파일을 실행하려면 명령 인터프리터를 시작해야합니다; lpApplicationName을 cmd.exe로 설정하고 lpCommandLine을 배치 파일의 이름으로 설정하십시오.
이 당신은 잘못하고있다
1. 당신이 희한 프로그램 설계가 무엇입니까.
모든 프로그램에서 사용자 입력을 요청하고 레지스트리에 쓸 수 있습니다. 레지스트리 작성을위한 네 가지 방법 (.NET, WSH, WMI, API)이있는 프로그램을 작성하고 있습니다. 그런 다음 레지스트리를 작성하는 두 가지 방법 (WMI 및 reg.exe)이있는 일괄 처리를 실행합니다. 그런 다음 두 가지 방법 (WMI, WSH)이있는 vbs 파일을 만듭니다.
2. 오류는 테스트하지 않습니다.
오류가 있는지 테스트해야합니다. 오류에 액세스 할 수있는 유일한 사람은 YOU입니다. 오류는 어떤 일이 일어 났는지 말합니다. 오류를 수정하거나 충돌해야합니다. 그리고 오류 번호, 오류 소스, 시도한 내용 및 매개 변수없이 묻는 것은 없습니다.
오류가 예상됩니다. 사용자는 예를 들어 파일을 삭제하거나 이동합니다.
3. 그것은 당신이 프로그래밍 동안 개방하는 문서
을 읽어야합니다. 특정 방법으로 행동하기 위해 필요한 것을 설명합니다. 그냥 무작위 명령을 입력하면 (여기에있는 많은 명령은 무효입니다.) 또는 임의의 매개 변수를 입력하는 것은 작동하지 않습니다.그것을 읽지 않으면 그 의미를 알 수 없습니다. 재생
4. 답을 말했다받을
, 당신이 가서 문서에 모든 것을보고, 다음 구글 무력.
귀하는 "작동하지 않았습니다"라는 한심한 대답을하지 마십시오. 오류 번호, 오류 원본, 수행하려고 시도한 내용 및 매개 변수를 게시합니다.
이
디코딩 오류
-2147220978 스타일 번호 오류를 디코딩하는 방법을 32 개 비트 부호있는 정수, 계산기와 16 진수로 변환이다.
Windows 오류 (작은 숫자) 및 COM HResults (일반적으로 예외는 있지만 0x80040154와 같이 8로 시작)는 WinError.h에 정의되어 있습니다 (단, 8007nnnn은 Windows 오류 번호를 찾습니다).
일반적으로 Windows 오류는 65,535 (0xFFFF) 미만입니다. 0x80000001부터 시작하는 오류는 COM (구성 요소 개체 모델) HResults입니다. 0xC0000001을 시작하는 오류는 NTStatus 결과입니다. 0xD0000001부터 시작하는 오류는 HResult에 반환 된 NTStatus 값입니다.
NTStatus.h에는 NTStatus 오류 (일반적으로 항상 0xC0000022와 같이 C로 시작하는 것은 아니지만)가 정의되어 있습니다.
.h 파일은 오류의 원인과 같은 단서를 줄 수있는 오류의 기호 이름을 포함하기 때문에 최상의 원본입니다. FormatMessage는 기호 이름에 설명 만 제공하지 않습니다. 그냥 내가 그들을 참조 할 수 있습니다 어디 내가 가서 내 스카이 드라이브에 그들을 가지고있는 두 개의 파일을 원하는 경우에
당신은 플랫폼 SDK (그것의 기가 바이트) http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D8279&sa=U&ei=w2IrULDDLsHFmAWbmIHoBg&ved=0CBwQFjAA&usg=AFQjCNHZn9-4f2NnuN9o3UWUsOF3wL7HBQ
를 다운로드하여 이러한 파일을 얻을. https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121
인터넷 오류 (12,000 - 12,999)는 창 오류이지만 위의 wininet.h에도 나와 있습니다.
다른 .h 파일에 정의 된 오류가 있습니다. 그러나 99 %는 위의 3 가지에 해당됩니다. NTSTATUS HRESULTS 및 코드
HRESULTS에서 최상위 비트 및 NTSTATUS의 두 개의 최상위 비트의
구조 오류에 설정된다. 따라서 Hresults는 오류가 발생하면 8을 시작하고 NTStatus는 C 오류를 시작합니다. 다음 14 또는 15 비트는 예약되어 있으며 일부는 오류를 포함하고있는 영역을 지정합니다. 이것은 16 진수를 읽을 때 세 번째와 네 번째 숫자입니다. EG 0xnn07nnnn - HResult 기능 코드 7은 정상적인 Windows 오류입니다 (COM 프로그램에서 반환 됨 - 따라서 HResult로 반환 됨). 설비 코드는 HResults의 경우 Winerror.h에 정의되고 NTStatus 코드의 경우 NTStatus.h에 정의됩니다. 그들은 다르다.
0x8003nnnn 디코딩하는데 에러 기능 코드 3
HRESULTS는 HRESULT는 OLE 구조적 저장소 에러 (내지 0xFF를 0x0) 포함을 의미한다. 이는 Dos 오류 코드와 동일합니다. 이것들은 Windows의 헤더 파일에있는 것처럼 보이지 않으며 코드 목록은이 게시물의 끝에 있습니다.
0x8004nnnn 디코딩하는데 에러 기능 코드 4
HRESULTS는 HRESULT 상기 범위의 나머지 (전방을 0x200)의 구성 요소 별 오차 동안 OLE 오류 (0x1ff 행이 0x0)을 포함 수단 20E 그래서 하나 개의 컴포넌트로부터의 것 다른 구성 요소로부터 20e와 다른 의미를가집니다.
0x80040200 이상의 오류 때문에 오류 원본이 중요한 이유입니다.
0x8007nnnn 디코딩 오류 설비 코드 7
HRESULTS는 HRESULT는 윈도우의 오류 코드를 포함하는 것을 의미한다. HResult가 아닌 Windows 오류 코드를 찾아야합니다.
0x80070002를 디코딩 할 수 있습니다. 0x는 16 진수이고 8은 오류를 의미하며 처음 7은 Windows 오류를 의미하고 나머지 숫자 2는 실제 Windows 오류를 의미합니다.
오류를 찾으려면 십진수 형식이어야합니다. 계산기 (시작 - 모든 프로그램 - 보조 프로그램 - 계산기)를 시작하고보기 메뉴 - 과학,보기 메뉴 - 16 진수를 선택하십시오. 2.보기 메뉴 - 소수점을 입력하십시오. 그것은 2
명령 프롬프트 (- 모든 프로그램 - 보조 프로그램 - 명령 프롬프트를 시작)를 시작 말할 것이다 및
net helpmsg 2
를 입력하고 그것을
The system cannot find the file specified.
을 말하거나 winerror에서 그것을 볼 것이다 .H
//
// MessageId: ERROR_FILE_NOT_FOUND
//
// MessageText:
//
// The system cannot find the file specified.
//
#define ERROR_FILE_NOT_FOUND 2L
0x8019nnnn 디코딩 오류
시설 0x19를 가진 HResults는 HTTP 오류입니다. 16,384 (0x4000) 미만의 코드는 HTTP 오류와 같습니다 (예 : HTTP 상태 404). 서버에 요청 된 URL이 0x80190194 (0x194 = 404)입니다. 코드 16,384 이상은 BITS에만 해당됩니다.
는 0xD 시작
HRESULT를 그것의 NTSTATUS 값 준다이다 0xDnnnnnnn 오류를 디코딩. 리드 D를 C로 변경하고 NTStatus (Hresult = NTStatus 또는 0x10000000)로 처리하십시오.
도스 오류 코드 (대한 0x8003nnnn 오류) 문제와 제목이 연결되어
Code Message
01 Invalid function number
02 File not found
03 Path not found
04 Too many open files (no handles left)
05 Access denied
06 Invalid handle
07 Memory control blocks destroyed
08 Insufficient memory
09 Invalid memory block address
0A Invalid environment
0B Invalid format
0C Invalid access mode (open mode is invalid)
0D Invalid data
0E Reserved
0F Invalid drive specified
10 Attempt to remove current directory
11 Not same device
12 No more files
13 Attempt to write on a write-protected diskette
14 Unknown unit
15 Drive not ready
16 Unknown command
17 CRC error
18 Bad request structure length
19 Seek error
1A Unknown media type
1B Sector not found
1C Printer out of paper
1D Write fault
1E Read fault
1F General failure
20 Sharing violation
21 Lock violation
22 Invalid disk change
23 FCB unavailable
24 Sharing buffer overflow
25 Reserved
26 Unable to complete file operation (DOS 4.x)
27-31 Reserved
32 Network request not supported
33 Remote computer not listening
34 Duplicate name on network
35 Network name not found
36 Network busy
37 Network device no longer exists
38 NetBIOS command limit exceeded
39 Network adapter error
3A Incorrect network response
3B Unexpected network error
3C Incompatible remote adapter
3D Print queue full
3E No space for print file
3F Print file deleted
40 Network name deleted
41 Access denied
42 Network device type incorrect
43 Network name not found
44 Network name limit exceeded
45 NetBIOS session limit exceeded
46 Temporarily paused
47 Network request not accepted
48 Print or disk redirection is paused
49-4F Reserved
50 File already exists
51 Reserved
52 Cannot make directory entry
53 Fail on INT 24
54 Too many redirections
55 Duplicate redirection
56 Invalid password
57 Invalid parameter
58 Network device fault
59 Function not supported by network (DOS 4.x)
5A Required system component not installed (DOS 4.x)
Facility Codes
NTStatus Facilities HResults Facilities
Common status values 0x0 Null 0x0
Debugger 0x1 Rpc 0x1
Rpc_runtime 0x2 Dispatch 0x2
Rpc_stubs 0x3 Storage 0x3
Io_error_code 0x4 Itf 0x4
Various drivers 0x5-0xf Win32 0x7
Ntwin32 0x7 Windows 0x8
Ntsspi 0x9 Sspi 0x9
Terminal_server 0xa Security 0x9
Faciltiy_mui_error_code 0xb Control 0xa
Usb_error_code 0x10 Cert 0xb
Hid_error_code 0x11 Internet 0xc
Firewire_error_code 0x12 Mediaserver 0xd
Cluster_error_code 0x13 Msmq 0xe
Acpi_error_code 0x14 Setupapi 0xf
Sxs_error_code 0x15 Scard 0x10
Transaction 0x19 Complus 0x11
Commonlog 0x1a Aaf 0x12
Video 0x1b Urt 0x13
Filter_manager 0x1c Acs 0x14
Monitor 0x1d Dplay 0x15
Graphics_kernel 0x1e Umi 0x16
Driver_framework 0x20 Sxs 0x17
Fve_error_code 0x21 Windows_ce 0x18
Fwp_error_code 0x22 Http 0x19
Ndis_error_code 0x23 Usermode_commonlog 0x1a
Hypervisor 0x35 Usermode_filter_manager 0x1f
Ipsec 0x36 Backgroundcopy 0x20
Maximum_value 0x37 Configuration 0x21
State_management 0x22
Metadirectory 0x23
Windowsupdate 0x24
Directoryservice 0x25
Graphics 0x26
Shell 0x27
Tpm_services 0x28
Tpm_software 0x29
Pla 0x30
Fve 0x31
Fwp 0x32
Winrm 0x33
Ndis 0x34
Usermode_hypervisor 0x35
Cmi 0x36
Windows_defender 0x50
나는 그것을 시도하고 단순히 작동하지 않습니다. 그것은 사용자 이름, 암호 및 도메인을 요구하지만 레지스트리에 값을 기록하지는 않습니다. 수동으로 배치 파일을 클릭하면 사용자 이름, 비밀번호 및 도메인을 묻는 메시지가 나타나고 레지스트리에 기록합니다. 나는 모든 노력을 다 써 버렸고 아무 것도 효과가 없었습니다. 뭔가하는 것처럼 보이지만 내 프로그램을 실행할 때 마지막 단계를 끝내지는 못합니다. – limburger
오류 검사가 있는데 오류가 없습니다. 나는 strickly 방망이 파일을 사용하는 대신 VBS를 실행하도록 변경하고 지금은 나에게 명령 창을 제공합니다 : 그리고 VBS를 실행하지 않습니다. 메시지의 글자 제한 때문에 두 번째 메시지에 코드를 첨부해야합니다. – limburger
'code'BOOL 결과 LPTSTR cmdname = "C : \\ Windows \\ System32 \\ cmd.exe"; LPTSTR cmdargs = "E : \\ Programs \\ LogonScript \\ AutoLogonEnable.vbs"; 경우 FALSE (LOGINFlag.State ==되는 체크) {= CreateProcess를 결과 (CMDNAME, cmdargs, NULL, NULL, CREATE_NEW_CONSOLE, NULL, NULL, SI, &pi); 의 WaitForSingleObject (pi.hProcess) INFINITE; LOGINFlag.State = 확인했다;'code' 오류 검사 코드를 알려주고 싶다면 – limburger
- 1. 폴더에서 배치 XML 파일을 실행하는 배치 스크립트
- 2. 배치 파일을 실행하는 VM웨어 명령어
- 3. asp.net에서 배치 파일을 실행하는 방법
- 4. 배치 파일을 자동 실행하는 방법
- 5. 배치 파일을 실행하는 Oracle 작업
- 6. 배치 파일을 실행하는 Windows 서비스
- 7. 배치 파일을 실행하는 스케줄 제거
- 8. 파일을 설치하고 실행하는 배치 파일을 만드는 방법
- 9. 티타늄 데스크톱 쉘 스크립트를 실행하는 createProcess
- 10. 배치 파일을 사용하여 Admin으로 MStest를 실행하는 방법
- 11. 모든 폴더에서 배치 파일을 실행하는 방법
- 12. HTA 내에서 배치 파일을 실행하는 방법
- 13. Cygwin 셸에서 Windows에서 배치 파일을 실행하는 방법
- 14. 백그라운드에서 C#의 배치 파일을 실행하는 방법
- 15. 배치 파일을 실행하는 데 걸리는 시간은 얼마나됩니까?
- 16. Java에서 배치 파일을 실행하는 방법은 무엇입니까?
- 17. 배치 파일을 사용하여 개미를 실행하는 방법은 무엇입니까?
- 18. 다른 컴퓨터에서 컴퓨터의 배치 파일을 실행하는 방법?
- 19. 그룹 정책에서 배치 파일을 실행하는 방법은 무엇입니까?
- 20. winform 컨트롤에서 배치 파일을 실행하는 방법
- 21. 배치 파일을 실행하는 바로 가기 만들기
- 22. javascript를 사용하여 백그라운드에서 배치 파일을 실행하는 방법
- 23. powershell을 사용하여 배치 파일을 실행하는 방법
- 24. 일정에 따라 배치 파일을 실행하는 방법
- 25. ProcessStartInfo를 사용하여 배치 파일을 실행하는 방법은 무엇입니까?
- 26. 배치 파일을 실행하는 데 지연이 있습니다.
- 27. MATLAB과 병행하여 배치 파일을 실행하는 방법은 무엇입니까?
- 28. 원격 시스템에서 배치 파일을 실행하는 방법
- 29. Java 코드에서 배치 파일을 실행하는 방법은 무엇입니까?
- 30. 두 배치 파일을 독립적으로 실행하는 방법은 무엇입니까?
어떻게? –
프로그램의 CreateProcess를 통해 해당 배치 파일을 실행하고 있습니다. – limburger
CreateProcess는 생성 된 프로세스의 컨텍스트를 의미합니다. 환경 블록, 작업 디렉터리 등입니다. 문제의 원인이 될 수 있습니다. 아마도 실제로 vbs 스크립트 문제를 해결하고 작동하지 않는 이유를 확인해야합니다. 그러면 CreateProcess 호출에서 변경해야 할 사항을 파악하는 데 도움이됩니다. – lordjeb