소리가 잘 들리지 않아 rundll32로 할 수 없습니다. 시도했기 때문에 알 수 있습니다. 여기 rundll의 문서가 링크되어있는 많은 질문이 있습니다. 이것은 기본적으로 다음 형식의 함수 만 호출합니다.
void CALLBACK EntryPoint (HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow); 당신은 어쩌면 단지 HWND를 더 인수를하지 않거나이 도구를 호출 할 수 있도록 설계되었다 특수 기능, 및 간단한 함수를 호출 할 수 있습니다 - 의미
http://support.microsoft.com/kb/164787
.
환경을 새로 고치려면 WM_SETTINGCHANGE 메시지를 브로드 캐스트 (예 : SendMessageTimeout에서 HWND_BROADCAST)해야합니다. 네 번째 인수 (wparam)는 0이어야하며 LPARAM은 L "환경"이어야합니다. 넓은 문자열이거나 변수가 새로 고침되지 않습니다.). 작은으로
#requires -version 2
if (-not ("win32.nativemethods" -as [type])) {
# import sendmessagetimeout from win32
add-type -Namespace Win32 -Name NativeMethods -MemberDefinition @"
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(
IntPtr hWnd, uint Msg, UIntPtr wParam, string lParam,
uint fuFlags, uint uTimeout, out UIntPtr lpdwResult);
"@
}
$HWND_BROADCAST = [intptr]0xffff;
$WM_SETTINGCHANGE = 0x1a;
$result = [uintptr]::zero
# notify all windows of environment block change
[win32.nativemethods]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE,
[uintptr]::Zero, "Environment", 2, 5000, [ref]$result);
이 1 개 이상의 명령하지만 맞는 : 여기
내가 (실제로 ++ C에서 번역 WM_SETTINGCHANGE에 대한 MSDN의 예제) 쓴 기억하지 않는, 어떤 작업 PS 코드입니다 스크립트.
변수 (PATH) 내에서 변수를 사용하여 트릭을 시도하지는 않았지만 두 개 이상의 후속 새로 고침이 필요합니다 (첫 번째 매개 변수는 BPATH를 업데이트 할 수 있고 두 번째 . PATH는