ตัวแปรสภาพแวดล้อมใน PATH ไม่ได้รับการขยายสำหรับพรอมต์คำสั่งที่ไม่ใช่ของผู้ดูแลระบบหรือไม่


11

ฉันมี Windows 7 %PATH%เครื่องซึ่งเมื่อพร้อมรับคำสั่งจะดำเนินการโดยผู้ใช้ปกติล้มเหลวที่จะขยายตัวแปรสภาพแวดล้อมใน หากพรอมต์คำสั่งถูกเรียกใช้ในฐานะผู้ดูแลระบบแทน (คลิกขวาเรียกใช้ในฐานะผู้ดูแลระบบ ) จากนั้น%PATH%จะขยายอย่างเหมาะสม

โดยเฉพาะ%PATH%สำหรับการcmd.exeทำงานในฐานะผู้ใช้ (แสดงผ่านset path) มีดังนี้:

Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

... ในขณะที่%PATH%สำหรับcmd.exeการทำงานในฐานะผู้ดูแลจะเป็นดังนี้:

Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

ฉันพยายามเข้าสู่ระบบในฐานะผู้ใช้ใหม่เพื่อสร้างโปรไฟล์ใหม่และปัญหายังคงอยู่ในโปรไฟล์นั้นเช่นกัน HKEY_CURRENT_USER\Environment\PATHไม่มีอยู่และHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Pathตรงกับพา ธ ทั้งระบบที่กำหนดในคุณสมบัติคอมพิวเตอร์ -> ตัวแปรสภาพแวดล้อม

ใครบ้างมีความคิดเกี่ยวกับสิ่งนี้อาจเป็นหรือที่ฉันสามารถดู?

คำตอบ:


8

สองสิ่งที่ฉันอาจลอง

  1. เรียกใช้sfc /scannowเพื่อดูว่าแก้ไขปัญหาที่ใหญ่กว่าได้หรือไม่
  2. ตรวจสอบรีจิสทรีสำหรับกุญแจสำคัญในการPath HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentอะไรคือประเภท มันควรจะพูดREG_EXPAND_SZ

นั่นมัน ถ้าฉันใช้เครื่องปกติและตั้งค่าREG_SZเป็นปัญหาที่เกิดขึ้นถ้าฉันตั้งกลับไปที่REG_EXPAND_SZมันได้รับการแก้ไข
Steve Vigneau

@Steve - หวาน! ฉันยังได้เรียนรู้บางสิ่งบางอย่างเกี่ยวกับ :) ว่า
Nixphoe

1
แต่ฉันสงสัยว่า ทำไมมันสร้าง env vars เหล่านั้นด้วยประเภทค่าที่ไม่ถูกต้องในรีจิสทรี? ฉันจำไม่ได้ว่าเคยมีปัญหานี้มาก่อนฉันใช้ Windows 8.1 Update 1 และดูเหมือนว่าปัญหานี้อาจเกิดขึ้นแม้ใน XP! support.microsoft.com/kb/329308
AdriánPérez

0

ฉันพบปัญหาเดียวกันขณะที่พยายามกำหนดค่า Maven ...

ฉันพบโพสต์นี้ใน Superuserที่ให้ความกระจ่างกับปัญหา แต่มันไม่ได้ผลสำหรับฉัน ปัญหาดูเหมือนจะเกี่ยวกับการยกระดับสิทธิ์เนื่องจากเชลล์ผู้ดูแลระบบจะทำงานได้ แต่เชลล์ผู้ใช้จะไม่ทำงาน ในที่สุดฉันก็ตัดสินใจที่จะสร้างตัวแปรผู้ใช้ใหม่เป็นตัวแปรระบบแทนและเพิ่มสิ่งเหล่านั้นในเส้นทางทั่วโลก

สิ่งนี้ใช้ได้กับตัวแปรสองตัว แต่ฉันมีหนึ่งคู่ที่ยังไม่ขยายตัว ฉันสร้างมันใหม่ด้วยชื่อใหม่สองสามครั้ง อย่างไรก็ตามในที่สุดตัวแปรก็ถูกขยายอย่างถูกต้องในเชลล์ผู้ใช้หลังจากฉันปิดใช้งาน UAC, รีบูต, เปิดใช้งาน UAC อีกครั้งและรีบูตอีกครั้ง


0

ผมมีปัญหาที่คล้ายกันมาก - ทางออกที่ง่ายก็คือการเพิ่มกึ่งลำไส้ใหญ่หลังจากนามแฝงในการกำหนดเส้นทาง

เรื่องยาว:

ฉันกำลังใช้node.jsเพื่อให้มีนามแฝงของNODE_HOMEผ่านตัวแปรสภาพแวดล้อมของผู้ใช้ จากนั้นฉันก็ต่อท้ายนามแฝงนี้กับตัวแปรสภาพแวดล้อมPATHของฉัน

สิ่งที่ฉันพบคือหลังจากรีบูตเชลล์จะสูญเสียพา ธ ไปยังNODE_HOMEดังนั้นnpmฯลฯ จะไม่ทำงาน เกิดอะไรขึ้น?

ในการตรวจสอบฉันเห็นว่ามีการตั้งค่าNODE_HOMEแต่ได้รับเซมิโคลอนมาอย่างน่าอัศจรรย์

C:\Users\ob>echo %NODE_HOME%
C:\Users\ob\node-8.11.1;

PATHตอนนี้ลงท้ายด้วยสตริงตัวอักษร% NODE_HOME%แทนที่จะเป็นพา ธ ที่ขยายไปยังโฟลเดอร์โหนด:

C:\Users\ob>echo %PATH%
C:\Program...rams\Git\cmd;%NODE_HOME%

วิธีแก้ไข:

ครั้งแรกลบหลงกึ่งลำไส้ใหญ่จากจุดสิ้นสุดของความหมายของNODE_HOME

ขั้นที่สองเพิ่มเซมิโคลอนหลังสัญลักษณ์NODE_HOMEในนิยามของPATH :

C:\Program...rams\Git\cmd;%NODE_HOME%;

ตอนนี้เมื่อฉันเริ่มเชลล์ใหม่และขยายPATHพบNODE_HOME :

C:\Users\ob>echo %PATH%
C:\Program...ams\Git\cmd;C:\Users\tkobo\Installations\node-8.11.1;

และnpmทำงานได้อีกครั้ง!


-1

ปัญหา : ปัญหาของฉันเป็นแค่เรื่องบาปเพราะฉันเข้าใจคุณถูกต้อง "Path" ของฉันมี ... ;% ANT_HOME% \ bin; ... ฉันมีตัวแปร ANT_HOME ที่ตั้งไว้อย่างถูกต้องภายใต้ตัวแปรระบบ (ไม่ใช่ผู้ใช้) และ CMD -> SET เหมือนกับ "echo% ANT_HOME%" พิมพ์อย่างถูกต้อง .

การแก้ไข : ฉันแก้ไขปัญหาโดยย้ายโฟลเดอร์จาก c: \ dev \ 3rd \ ant ... ไปยัง c: ** ไฟล์โปรแกรม (x86) ** \ dev \ 3rd \ ant ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.