.NET Process.Start ডিফল্ট ডিরেক্টরি?


114

আমি একটি সি #। নেট কনসোল অ্যাপ্লিকেশনটির ভিতরে থেকে জাভা অ্যাপ্লিকেশনটি সরিয়ে ফেলছি । এটি জাভা অ্যাপ্লিকেশনটি "ডিফল্ট" ডিরেক্টরি কী তা বিবেচনা করে না তার ক্ষেত্রে এটি দুর্দান্ত কাজ করে তবে জাভা অ্যাপ্লিকেশনটির জন্য ব্যর্থ হয় যা কেবলমাত্র সমর্থন ফাইলের জন্য বর্তমান ডিরেক্টরি অনুসন্ধান করে।

এমন একটি প্রক্রিয়া পরামিতি রয়েছে যা কোনও প্রক্রিয়া শুরু হয়েছে সেই ডিফল্ট ডিরেক্টরিটি নির্দিষ্ট করার জন্য সেট করা যেতে পারে?

উত্তর:


183

হ্যাঁ! প্রসেসস্টার্টআইএনফো-এর ওয়ার্কিংডাইরেক্টরি নামে একটি সম্পত্তি রয়েছে , কেবল ব্যবহার করুন:

...
using System.Diagnostics;
...

var startInfo = new ProcessStartInfo();

  startInfo.WorkingDirectory = // working directory
  // set additional properties 

Process proc = Process.Start(startInfo);

পারি WorkingDirectoryএকটি আপেক্ষিক পথ হবে, এবং যদি তাই হয়, তা আপেক্ষিক, বর্তমান ফাইল বা বর্তমান এক্সিকিউটেবল নির্দেশিকা হল? আমি যে প্রোগ্রামটি শুরু করার চেষ্টা করছি তা কার্যকর করতে আমার প্রোগ্রাম পেতে আমার সমস্যা হচ্ছে। আমি কর্মের ডিরেক্টরিটি এক্সের ডিরেক্টরিতে (বর্তমান ফাইলের সাথে এবং বর্তমান এক্সির সাথে সম্পর্কিত) সেট করে রেখেছি তবে এটি এটি খুঁজে পাচ্ছে না।
— পুশকিন

56

প্রক্রিয়া শুরু করার পূর্বে সেট করতে প্রসেসস্টার্টআইএনফো . ওয়ার্কিং ডিরেক্টরী সম্পত্তিটি ব্যবহার করুন । যদি সম্পত্তি সেট না করা থাকে তবে ডিফল্ট ওয়ার্কিং ডিরেক্টরিটি% SYSTEMROOT% \ system32 32

আপনি ব্যবহার করে% SYSTEMROOT% এর মান নির্ধারণ করতে পারেন:

string _systemRoot = Environment.GetEnvironmentVariable("SYSTEMROOT");  

এখানে কিছু নমুনা কোড রয়েছে যা% প্রোগ্রামফায়ালস% এর কার্যকরী ডিরেক্টরি সহ নোটপ্যাড.এক্সেপ খুলবে:

...
using System.Diagnostics;
...

ProcessStartInfo _processStartInfo = new ProcessStartInfo();
  _processStartInfo.WorkingDirectory = @"%ProgramFiles%";
  _processStartInfo.FileName         = @"Notepad.exe";
  _processStartInfo.Arguments        = "test.txt";
  _processStartInfo.CreateNoWindow   = true;
Process myProcess = Process.Start(_processStartInfo);

এমন একটি পরিবেশ পরিবর্তনশীলও রয়েছে যা আপনার প্রক্রিয়াটির জন্য বর্তমান চলমান ডিরেক্টরিকে নিয়ন্ত্রণ করে যা আপনি সরাসরি পরিবেশের.কমেন্টের ডিরেক্টরী সম্পত্তি দ্বারা অ্যাক্সেস করতে পারেন ।


ভাল লাগল, আমি জানতাম না যে আপনি। ওয়ার্কিং ডিরেক্টরী সম্পত্তিটিতে পরিবেশের পরিবর্তনগুলি ব্যবহার করতে পারেন।
— Brain2000

1
বিঙ্গো, এটির উত্তর - ডিফল্ট ডিরেক্টরি হ'ল সিস্টেম্রুট। +1
— ashes999

17

এটি প্রয়োগ করার চেষ্টা করে আমার মাথায় আঘাত করার পরে একটি নোট। যদি আপনার "UseShellExecute" টি মিথ্যাতে সেট করে থাকে তবে ওয়ার্কিংডাইরেক্টরি মানটি সেট করা কাজ করে না।


1
এটি প্রশ্নের উত্তর সরবরাহ করে না। কোনও লেখকের কাছ থেকে সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন - আপনি সর্বদা আপনার নিজের পোস্টে মন্তব্য করতে পারেন, এবং আপনার যথেষ্ট সুনামের পরে আপনি কোনও পোস্টে মন্তব্য করতে সক্ষম হবেন ।
— সাইক্লোনকোড

1
এমনকি 6 বছর পরেও, ইউজশেলএক্সেকুট সম্পর্কে এই মন্তব্যটি সহায়ক ছিল। ইস্যু স্থির।
— AlanC


6

প্রসেস.স্টার্ট পদ্ধতিতে একটি ওভারলোড থাকে যা প্রসেসস্টার্টআইএনফো-র একটি উদাহরণ নেয়। এই শ্রেণীর একটি সম্পত্তি রয়েছে "ওয়ার্কিংডাইরেক্টরি"।

আপনি যে ফোল্ডারটি ব্যবহার করতে চান তাতে সেই সম্পত্তি সেট করুন এবং এটি সঠিক ফোল্ডারে শুরু করা উচিত।


4

ProcessStartInfoশ্রেণিটি ব্যবহার করুন এবং WorkingDirectoryসম্পত্তিটির জন্য একটি মান নির্ধারণ করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.