Windows7/8/Vista/XP에서 시스템 시작시 실행되는 python 앱을 작성했습니다. 처음 실행될 때 시스템에있는 특정 프로그램과 몇 가지 파일 형식/확장명을 연결해야합니다. 당분간 나는 이렇게 성취한다 :파일을 파이썬 프로그램에 연결
import win32com.shell.shell as shell
def runAssoc():
shell.ShellExecuteEx(
lpVerb="runas",
lpFile='c:\\Users\\myUser\\assoc.bat')
문제는 시작에서 실행했을 때 가끔 작동하지 않는 경우입니다. 내가 here 그 ShellExecuteEx
그 오류가 호출 프로세스에 출력되지 않습니다, 그래서 그 끝에 느슨한 볼 수 없으며 주어진 기사를 읽어 therelpVerb="runas"
일반적으로 나쁜 연습으로 간주됩니다 읽었습니다.
내 assoc.bat는 다음과 같은 방법으로 기록 된대로 관리자의 승인이 필요합니다. (Windows)와 함께 제공된 나는 마이크로 소프트의 메모장을 연결하고있어 여기에
assoc .txt=myNotepad
assoc .hello=myNotepad
ftype myNotepad="C:\Windows\system32\notepad.exe" "%%1"
을 (의 그 "TXT"와 "안녕하세요"확장에 물론 이해가 안되지만 좋은 예입니다.)
나는 Windows가 프로그램에 파일 확장명을 연결할 수있는 명령 줄 도구를 제공하지 않는다는 것을 이해합니다. 현재 사용자는입니다. 나는 성취하려고 노력하고있다.)
On this articleassoc
은 관리자 권한없이 쓸 수있는 HKEY_CURRENT_USER
대신 Windows 설치의 모든 사용자 계정에서 사용하는 레지스트리 영역에 영향을줍니다.
나는 sys.argv[-1] != "asadmin"
을 확인하라는 답변이 here이지만, sys.argv
은 앱을 실행할 때마다 빈 배열로 보인다.
1) ShellExecuteEx
이 실행되고 필요한 경우 관리자 권한을 요구할 수 있습니까?
2)이 확장을 현재 사용자에게만 연결하는 배치 파일을 만드는 방법이 있습니까? 사실, 오류의 원인 인 'runas'매개 변수를 사용할 필요가 없습니다.
작은 메모 : 실제적으로 나는이 배치 파일을 '프로그래밍 방식으로'즉석에서 빌드하지만 실제 문제와 관련이 없으므로 여기서는 설명하지 않습니다.
큰 물건. 나는 그것을 조금 테스트하고 그것이 어떻게 진행되는지 업데이트 할 것이다. – user1555863