제목이 모든 것을 말해줍니다. .lnk가 프로그래밍 방식으로 열리는 콘솔 창의 배경색을 변경하는 방법은 무엇입니까?
예를 들어 이전 스크립트를 사용하여답변: pintotaskbar.ps1
:
이렇게 하면 바탕화면에 바로가기가 생성됩니다.
$shortcutpath = "$home\desktop\$name.lnk"
$wshshell = new-object -comobject wscript.shell
$shortcut = $wshshell.createshortcut($shortcutpath)
$shortcut.targetpath = $path
$shortcut.save()
이렇게 하면 바로 가기가 프로그램을 시작하게 됩니다.
$bytes = [system.io.file]::readallbytes($shortcutpath)
$bytes[0x15] = $bytes[0x15] -bor 0x20
[system.io.file]::writeallbytes($shortcutpath,$bytes)
이 코드를 사용하여 PowerShell 7.1.1을 작업 표시줄에 고정했습니다.
pintotaskbar.ps1 "C:\Program Files\PowerShell\7\pwsh.exe::PowerShell 7.1.1"
"관리자: PowerShell 7.1.1"을 작업 표시줄에 고정하지만 배경색은 검은색입니다. GUI를 RGB로 만드는 방법을 알고 있습니다(1,36,86)
바로가기 자체에 배경색 정보를 추가하는 명령을 어떻게 사용할 수 있나요?
도움을 주셔서 감사합니다.
정말 유용한 것을 발견했습니다. 다음 명령을 사용하여 설치했습니다 LinkParse3
.
pip install LnkParse3
다음 명령을 제공합니다: lnkparse
용법:lnkparse path\to\somelnkfile.lnk
이를 사용하여 일부 파일을 구문 분석하고 결과를 Google 드라이브에 업로드했습니다.
https://drive.google.com/file/d/1oJKXnr87pyiyM7So8gLlrTnpwUfsV3g2/view?usp=sharing
세 가지 PowerShell 바로가기 모두 색상 테이블이 5645313으로 설정되어 있고 모두 RGB 값이 (1,36,86)이라는 것을 발견했습니다.
이 답변에 따르면:https://stackoverflow.com/a/48071483/14636788
명시적인 RGB 색상을 지정할 때 COLORREF 값은 다음과 같은 16진수 형식을 갖습니다.
0x00BBGGRR
따라서 RGB 값의 순서를 바꾸면 다음과 같습니다.
PS C:\Windows\System32> [int]"0x562401"
5645313
알았어!
하지만 스크립트는 .lnk 파일을 수정하지 않으며 저는 실제로 Python에 능숙하지 않습니다. 그러나 약간만 조정하면 .lnk 파일을 수정할 수 있다고 믿습니다...
GitHub 저장소LnkParse3
내가 배운 것에서 .lnk
파일은[MS-SHLLINK]: 쉘 링크(.LNK) 바이너리 파일 형식
변경해야 할 속성은 이며 Color Table
다음 위치에 있습니다.
EXTRA BLOCKS
→ CONSOLE_PROPERTIES_BLOCK
→Color Table
프로그램에서 속성을 사용 IShellLinkDataList
하고 설정 해야 NT_CONSOLE_PROPS
하지만 지금까지 내가 찾을 수 있는 모든 것에서는 PowerShell을 사용하여 .lnk 파일을 수정할 수 없습니다. 아직 조사 중입니다...
내가 해야 할 일은 다음과 같습니다. IShellLinkDataList::AddDataBlock
그러나 PowerShell에서 수행하는 방법을 모르지만 어렵지는 않습니다...
마침내 정말 도움이 되는 것을 발견했습니다.
https://github.com/neilpa/cmd-colors-solarized/blob/master/Get-Link.ps1
비록 이것이 매우 발전되고 복잡하다는 점을 인정해야 하지만, 나는 그것을 이해하고 필요에 따라 조정할 수 있다고 믿습니다.
이를 달성하려면 위에서 언급한 방법을 사용하여 .NET/C# IShellLink 라이브러리를 사용해야 한다는 것을 알았습니다.
ShellLink.cs를 인터넷 검색하여 관련 스크립트 파일을 많이 찾을 수 있었지만 C#에 정통하지 않기 때문에 부분적으로만 이해했습니다.
그렇다면 기존 .lnk 파일에 NT_CONSOLE_PROPS 블록을 추가하고 ShellLink.cs 파일을 사용하여 제공된 RGB 값에 따라 색상표 특성을 설정하는 PowerShell 스크립트를 어떻게 작성할 수 있습니까?
답변1
그만큼
NT_CONSOLE_PROPS
구조에는 16가지 색상이 포함되어 있습니다.
컬러레프ColorTable
기사에서 호출되는 속성/색상 탭에 표시되는 형식입니다 .
기본적으로 선택되는 색상은 첫 번째 색상인 검정색입니다.
Get-Link.ps1
이미 찾은 PowerShell 스크립트를 이해하지 않고도 사용하여 링크의 색상을 변경할 수 있습니다 .
검정색을 다른 색상으로 변경하려면 보관된 솔라라이징을 기반으로 코드가 다음과 같을 수 있습니다. 스크립트:
[CmdletBinding()]
param($Path = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Windows PowerShell\Windows PowerShell.lnk" )
# Requires the "Get-Link script"
$lnk = Get-Link $Path
$lnk.ConsoleColors[0] = {new chosen color}
$lnk.Save()
)
이 코드를 테스트하지는 않았지만 위의 내용을 토대로 작동하게 할 수 있을 것입니다. 스크립트는 Get-Link.ps1
수년 동안 사용되었으므로 이제 안정적인 상태에 있습니다.
답변2
불행히도 powershell.exe에는 .lnk에 추가할 수 있는 시작 시 색상을 지정하는 플래그가 없습니다. 고정한 대상이 cmd.exe
Powershell 셸을 실행하기 위해 실행 중(검은색으로 시작)일 가능성이 높습니다.
HKCU:\Console
다음 에서 레지스트리 설정을 시도할 수 있습니다 .이 답변). 스크린샷의 색상 선택기가 수행하는 작업은 다음과 같습니다.
Set-Location HKCU:\Console
New-ItemProperty . ColorTable00 -type DWORD -value 0x00562401
New-ItemProperty . ColorTable07 -type DWORD -value 0x00f0edee
또는 PS 시작 시 로드되는 프로필 스크립트에 항목을 추가하세요.
# print path to profile script
$profile
# set example console colors in profile .ps1
[console]::backgroundcolor = "darkmagenta"
[console]::foregroundcolor = "darkyellow"
답변3
배경색을 변경하려면 다음을 수행하십시오.
- 달리다
cmd
- 명령 실행
color XX
- 사용자가 자신의 명령을 실행하기 전에 레지스트리를 통해 하나의 명령을 실행할 수 있습니다. powershell
내부에서 전화cmd