ความหมายของค่าสตริง“ NoWorkingDirectory” ใน Windows Registry คืออะไร


6

ค่าสตริง "NoWorkingDirectory" ว่างเปล่ามักจะใช้ใน Windows Registry เมื่อรายการเมนูคลิกขวาที่ผู้ใช้กำหนดถูกสร้างขึ้น ตัวอย่างเช่นเพื่อให้สามารถเปิด PowerShell เมื่อคลิกขวาที่โฟลเดอร์ backround ใน Windows Explorer (ตรงข้ามกับการคลิกขวาที่โฟลเดอร์เองในกรณีนั้นไม่ใช้ "NoWorkingDirectory"):

[HKEY_CLASSES_ROOT\Directory\Background\shell\powershell]
@="Open PowerShell Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\powershell\command]
@="C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell.exe -NoExit -Command Set-Location -LiteralPath '%V'"

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


ฉันจะจินตนาการว่ามีค่าไดเรกทอรีมันจะทำงานเฉพาะในไดเรกทอรีนั้น คุณมีตัวอย่างอื่น ๆ หรือไม่?
Ramhound



ฉันเดาว่ามันเป็นโฟลเดอร์ที่ใช้ในการดำเนินการหากไม่มี Working Folder ที่ให้ไว้เมื่อเรียกใช้คำสั่งเชลล์ (คล้ายกับตัวเลือก "เริ่มต้น:" ในคุณสมบัติของทางลัด) เมื่อว่างเปล่ามันอาจจะถือว่าโฟลเดอร์ปัจจุบัน แต่อีกครั้งนี่เป็นเพียงการคาดเดา ;)
Ƭᴇcʜιᴇ007

คำตอบ:


7

WorkingDirectory เป็นคุณสมบัติของ System.Diagnostics.ProcessStartInfo เมื่อคุณคลิกขวาคุณจะเริ่มต้นกระบวนการใหม่และการตั้งค่านี้ช่วยให้คุณสามารถเริ่มต้นกระบวนการโดยไม่มีไดเรกทอรีปัจจุบันกลายเป็น "ไดเรกทอรีทำงาน" จากนั้นจะมีค่าเริ่มต้นเป็น System32 สำหรับคำสั่งที่กำลังเรียกใช้

ดังนั้นคุณจะใช้ "NoWorkingDirectory" เมื่อคุณไม่ต้องการคลิกขวาเพื่อเป็นส่วนหนึ่งของเส้นทางสิ่งแวดล้อมในช่วงระยะเวลาของสคริปต์ การตั้งค่าที่ไร้ประโยชน์ใน 90% ของกรณียกเว้นว่าคุณมีไฟล์ที่มีชื่อคล้ายกันในหลาย ๆ ตำแหน่งของพา ธ ซึ่งอาจติดหนึบได้เว้นแต่จะระบุ "NoWorkingDirectory"

ดูรายละเอียดเพิ่มเติมได้ที่นี่

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory%28v=vs.110%29.aspx


ตัวอย่างเช่นถ้าฉันมีสำเนาของ DISM ในโฟลเดอร์และคลิกขวามัน "NoWorkingDirectory" จะอนุญาตให้ฉันเข้าถึงสำเนาใน System32 เหนือหนึ่งในไดเรกทอรีที่ฉันคลิกขวา ดูสิมันไร้ประโยชน์เพราะบ่อยกว่าที่ฉันไม่ต้องการคัดลอกในโฟลเดอร์ที่ฉันคลิก
Knuckle-Dragger

0

คุณสมบัติกริยา "NoWorkingDirectory" ไม่มีการบันทึกดังนั้นนี่เป็นเพียงการเดา:

Cmd.exe ไม่สนับสนุนการแชร์ระยะไกล (UNC) เป็นไดเรกทอรีปัจจุบันและถ้าคุณเริ่มต้น Cmd.exe ด้วยไดเรกทอรีทำงานมันจะพิมพ์ข้อความเตือนไปยังคอนโซล

หากคุณดูที่การลงทะเบียน "หน้าต่างคำสั่งเปิดที่นี่" คุณจะเห็นว่ามันเริ่มต้น Cmd.exe ด้วยpushdคำสั่งและpushdรองรับเส้นทาง UNC NoWorkingDirectory อยู่ตรงนั้นเพื่อหลีกเลี่ยงการแสดงข้อความเตือน

ไม่จำเป็นสำหรับ PowerShell

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