Khi chạy tập lệnh dòng lệnh, có thể lấy tên của người dùng hiện tại không? Hệ điều hành là Windows XP.Làm cách nào để tìm người dùng hiện tại trong môi trường Windows?
Trả lời
Bạn có thể sử dụng biến username: %USERNAME%
Tên biến không có dấu phần trăm. Dấu phần trăm chỉ cần thiết trong Command Prompt. – kurast
Nó phải ở trong %USERNAME%
. Rõ ràng điều này có thể dễ dàng giả mạo, do đó, không dựa vào nó để bảo mật.
Mẹo hữu ích: gõ set
trong dấu nhắc lệnh sẽ liệt kê tất cả các biến môi trường.
Máy trạm cấu hình mạng của bạn | tìm nhận xét "Tên người dùng" là rất hữu ích. Nó phải là một câu trả lời thay vì chỉ là một bình luận – Alpay
Tên đăng nhập:
echo %USERNAME%
Domainname:
echo %USERDOMAIN%
Bạn có thể có được một danh sách đầy đủ của các biến môi trường bằng cách chạy lệnh set
từ dấu nhắc lệnh.
Nó luôn làm tôi bực mình vì sao Windows không có một số tiện ích tập lệnh nhỏ hữu ích hơn của Unix, chẳng hạn như who/whoami, sed và AWK. Dù sao, nếu bạn muốn một cái gì đó dễ dàng, có được Visual Studio Express và biên dịch như sau:
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv) {
printf("%s", GetUserName());
}
Và chỉ sử dụng trong tập tin thực thi của bạn.
% USERNAME% sẽ đưa bạn tên người dùng của quy trình hiện đang chạy. Tùy thuộc vào cách bạn đang chạy tập tin thực thi của bạn, điều này không nhất thiết phải giống như tên của người dùng hiện tại. Ví dụ: bạn có thể đang chạy tệp batch của mình thông qua tác vụ được lập lịch, từ một dịch vụ, v.v.
Đây là cách chắc chắn hơn để nhận tên người dùng của người dùng hiện đã đăng nhập bằng cách gõ tên người dùng đã bắt đầu tác vụ explorer.exe:
for /f "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do if /i "%%a %%b"=="User Name:" set _currdomain_user=%%c
for /f "TOKENS=1,2 DELIMS=\" %%a in ("%_currdomain_user%") do set _currdomain=%%a & set _curruser=%%b
Tôi sử dụng phương pháp này để viết các tệp lô để thử nghiệm.
echo %userdomain%\%username%
Vì bạn phải bao gồm mật khẩu trong văn bản đơn giản nếu xác thực là cần thiết, tôi sẽ chỉ sử dụng nó trong một môi trường hoàn toàn tin nơi người dùng khác không thể xem nó hoặc nếu người dùng nhìn thấy các mật khẩu sẽ không chịu hậu quả.
Hy vọng điều này sẽ giúp ai đó ra ngoài.
Trong ngữ cảnh chuẩn, mỗi người dùng được kết nối nắm giữ một quá trình explorer.exe: Lệnh [tasklist/V | find "explorer"] trả về một dòng chứa chủ sở hữu quá trình explorer.exe, với regex được điều chỉnh phù hợp để có được giá trị yêu cầu. Điều này cũng chạy hoàn toàn dưới Windows 7.
Trong trường hợp hiếm hoi explorer.exe được thay thế bởi một chương trình khác, bộ lọc tìm có thể được điều chỉnh cho phù hợp với trường hợp này. Nếu lệnh trả về một dòng trống thì có khả năng là không có người dùng nào được đăng nhập. Với Windows 7, bạn cũng có thể chạy [truy vấn phiên | tìm ">"].
Chỉ cần sử dụng lệnh này tại dấu nhắc lệnh:
C:\> whoami
%USERNAME%
là câu trả lời đúng trong hàng loạt và khác trong môi trường Windows.
Một tùy chọn khác là sử dụng %USERPROFILE%
để nhận đường dẫn của người dùng, như C:\Users\username
.
Theo như tìm thấy BlueBearr phản ứng tốt nhất (trong khi tôi, m chạy tập lệnh batch của tôi với ví dụ quyền SYSTEM) Tôi phải thêm một cái gì đó vào nó. Bởi vì trong dòng phiên bản ngôn ngữ Windows (Ba Lan) của chúng tôi sẽ bị bắt bởi "%% a %% b" == "Tên người dùng:" được thực thi hoàn toàn (có chứa một số ký tự dấu phụ trong ngôn ngữ của tôi), tôi bỏ qua 7 dòng đầu tiên và hoạt động vào ngày 8.
@for /f "SKIP= 7 TOKENS=3,4 DELIMS=\ " %%G in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do @IF %%G==%COMPUTERNAME% set _currdomain_user=%%H
Trong hầu hết các trường hợp, biến% USERNAME% sẽ là thứ bạn muốn.
echo %USERNAME%
Tuy nhiên, nếu bạn đang chạy vỏ cmd cao thì% USERNAME% sẽ báo cáo tên quản trị viên thay vì tên người dùng của riêng bạn. Nếu bạn muốn biết điều sau, hãy chạy:
for /f "tokens=2" %u in ('query session ^| findstr /R "^>"') do @echo %u
- 1. Làm cách nào để đặt biến môi trường người dùng trong Windows Server 2008 R2 làm người dùng bình thường?
- 2. Làm thế nào để bạn cung cấp cho các biến môi trường người dùng hiện tại
- 3. Cách đọc biến môi trường người dùng trong C#?
- 4. Làm mới biến môi trường của người dùng Windows trong cygwin
- 5. Tìm ngôn ngữ người dùng hiện tại
- 6. Làm thế nào để thực hiện trong NodeJS bằng cách sử dụng môi trường của người dùng?
- 7. Xử lý môi trường nhiều người dùng
- 8. Làm cách nào để tìm hiểu, người dùng nào đang chạy tập lệnh php hiện tại?
- 9. Làm cách nào để có được người dùng hiện tại trong Perl theo cách di động?
- 10. Nhận tên người dùng Windows của người dùng hiện tại bằng cách sử dụng php?
- 11. Lấy tên và họ của người dùng Windows hiện tại?
- 12. cách đặt biến môi trường cho người dùng root
- 13. Trong Git và Subversion, làm cách nào để tìm ra người dùng hiện tại tại thiết bị đầu cuối?
- 14. Làm thế nào để sử dụng các biến môi trường Windows trong kịch bản Vim?
- 15. Xác thực Windows - Nhận tên người dùng hiện tại
- 16. Làm cách nào để bắt đầu tmux với môi trường hiện tại?
- 17. Ở Django, làm cách nào để đặt trường người dùng thành biểu mẫu cho người dùng hiện đã đăng nhập?
- 18. Nhận tên người dùng hiện tại bằng C++ trên Windows
- 19. Có cách nào để di chuyển tên người dùng hiện tại bằng Python?
- 20. Java: Cách lập trình để xác định người dùng Windows hiện tại
- 21. Người dùng hiện tại trong Magento?
- 22. Phạm vi đường ray tìm với người dùng hiện tại
- 23. cách thêm các chức năng vào môi trường hiện tại
- 24. Cách lấy thư mục chính của người dùng hiện tại trong Windows
- 25. MVC3 + Cách lấy tên người dùng hiện tại đã đăng nhập của người dùng
- 26. Tôi làm cách nào để có được người dùng hiện tại trong Liferay?
- 27. Làm cách nào để biết vai trò của người dùng hiện tại trong WordPress?
- 28. Làm cách nào để nhận thực thể đại diện cho người dùng hiện tại trong Symfony2?
- 29. Làm thế nào để mô phỏng môi trường IE8?
- 30. Cách nhận người dùng hiện tại và cách sử dụng Lớp người dùng trong MVC5?
Related (from .NET): * [Làm cách nào để nhận tên người dùng hiện tại bằng .NET bằng C#?] (Http://stackoverflow.com/questions/ 1240373) * –