Biến môi trường trong PATH Không được mở rộng cho Dấu nhắc lệnh không phải của quản trị viên?


11

Tôi có một máy Windows 7, khi Command Prompt được chạy bởi một người dùng bình thường, không thể mở rộng các biến môi trường trong %PATH%. Nếu dấu nhắc lệnh thay vì chạy với tư cách quản trị viên (nhấp chuột phải, Chạy với tư cách quản trị viên ) thì %PATH%sẽ được mở rộng một cách thích hợp.

Cụ thể, %PATH%để cmd.exechạy như người dùng (hiển thị qua set path) như sau:

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

... trong khi %PATH%cho cmd.exechạy as Administrator là như sau:

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

Tôi đã thử đăng nhập với tư cách là người dùng mới để tạo hồ sơ mới và vấn đề vẫn tồn tại trên hồ sơ đó. HKEY_CURRENT_USER\Environment\PATHkhông tồn tại và HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Pathkhớp với đường dẫn toàn hệ thống đã xác định trong Thuộc tính máy tính -> Biến môi trường.

Có ai có bất kỳ ý tưởng về những gì nó có thể được, hoặc nơi tôi có thể nhìn?

Câu trả lời:


8

Hai điều tôi có thể thử.

  1. Chạy một sfc /scannowđể xem nếu điều đó khắc phục bất kỳ vấn đề lớn hơn tại chơi.
  2. Kiểm tra sổ đăng ký cho Pathkhóa trong HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Các loại là gì . Nó nên nóiREG_EXPAND_SZ

Điều đó là vậy đó. Nếu tôi lấy một máy bình thường và đặt nó vào REG_SZsự cố xảy ra, nếu tôi đặt nó trở lại REG_EXPAND_SZthì nó sẽ được sửa.
Steve Vigneau

@Steve - Ngọt ngào! Tôi thậm chí đã học được điều gì đó về điều đó :)
Nixphoe

1
Nhưng tôi tự hỏi. Tại sao nó tạo ra các vv env với loại giá trị sai trong sổ đăng ký? Tôi không nhớ đã gặp sự cố này trước đây, tôi đang sử dụng Windows 8.1 Update 1 và có vẻ như sự cố này có thể xảy ra ngay cả trong XP! support.microsoft.com/kb/329308
Adrián Pérez

0

Tôi gặp vấn đề tương tự trong khi cố gắng cấu hình Maven ...

Tôi đã tìm thấy bài đăng này trên Superuser làm sáng tỏ vấn đề này, nhưng nó không hoạt động với tôi. Vấn đề dường như là về độ cao quyền, vì trình quản trị sẽ hoạt động, nhưng trình bao người dùng thì không. Cuối cùng tôi đã quyết định chỉ tạo lại các biến người dùng dưới dạng các biến hệ thống và thêm chúng vào đường dẫn chung.

Điều này làm việc cho một vài biến, nhưng tôi có một cặp vẫn không mở rộng. Tôi đã tạo lại chúng với tên mới một vài lần, nhưng không có kết quả. Tuy nhiên, các biến cuối cùng đã mở rộng chính xác trong vỏ người dùng sau khi tôi tắt UAC, khởi động lại, bật lại UAC và khởi động lại.


0

Tôi đã có một vấn đề rất giống nhau - giải pháp đơn giản là thêm dấu chấm phẩy sau bí danh trong định nghĩa đường dẫn .

Câu chuyện dài:

Tôi đang sử dụng node.jsnên có một bí danh NODE_HOME được xác định thông qua biến môi trường người dùng. Sau đó tôi thêm bí danh này vào biến môi trường PATH của mình .

Những gì tôi tìm thấy là sau khi khởi động lại, shell đã mất đường dẫn đến NODE_HOME nên npmsẽ không hoạt động. Chuyện gì đang xảy ra vậy?

Khi kiểm tra, tôi thấy rằng NODE_HOME được thiết lập, nhưng nó đã có được một dấu chấm phẩy một cách kỳ diệu.

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

Bây giờ PATH kết thúc bằng chuỗi ký tự % NODE_HOME% thay vì đường dẫn mở rộng đến thư mục nút:

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

Để sửa chữa nó:

Đầu tiên, xóa dấu chấm phẩy từ cuối định nghĩa của NODE_HOME .

Thứ hai, thêm dấu chấm phẩy sau biểu tượng NODE_HOME trong định nghĩa của PATH :

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

Bây giờ khi tôi bắt đầu một shell mới và mở rộng PATH , nó tìm thấy NODE_HOME :

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

npmhoạt động trở lại!


-1

VẤN ĐỀ : Vấn đề của tôi chỉ là tội lỗi, vì tôi hiểu bạn chính xác. "Đường dẫn" của tôi chứa ...;% ANT_HOME% \ bin; ... Tôi đã đặt biến ANT_HOME chính xác trong Biến hệ thống (không phải người dùng) và CMD -> SET giống như "echo% ANT_HOME%" đã in chính xác .

GIẢI PHÁP : Tôi đã giải quyết vấn đề bằng cách di chuyển thư mục từ c: \ dev \ 3rd \ ant ... sang c: ** Tệp chương trình (x86) ** \ dev \ 3rd \ ant ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.