আমি কীভাবে প্রোগ্রামিয়ালি নতুন উইন্ডোজ ব্যবহারকারীর প্রোফাইল তৈরি করতে পারি?


20

আমি উইন্ডোজ পরিষেবাটি চালানোর জন্য একটি (স্থানীয়) ব্যবহারকারী তৈরি করছি। নেটওয়র্ক সার্ভিস, লোকাল সার্ভিস বা লোকাল সিস্টেম ব্যবহার না করার জন্য আমার ভালো কারণ রয়েছে।

আমি এর মাধ্যমে ব্যবহারকারী তৈরি করি net user foobar "Abcd123!" /add- এটি দুর্দান্ত কাজ করে।

এই মুহূর্তে, c:\users\foobar অস্তিত্ব নেই।

যদি আমি ব্যবহারকারীর হোম ডিরেক্টরি তৈরি করি , ব্যবহারকারীটি হয় আগে লগইন করে (বা আরও প্রাসঙ্গিকভাবে) বা ব্যবহারকারী যে পরিষেবাটির জন্য চালু হয়, উইন্ডোজ পাশের দরজা নামে একটি ব্যবহারকারী-প্রোফাইল তৈরি করে c:\users\foobar-{gibberish/SID/whatever}- এটি কোনও পূর্বাভাসযোগ্য নাম নয়।

ডিরেক্টরি ব্যবহারের মতো জিনিসগুলি রাখার জন্য আমার ব্যবহারকারীর হোম ডিরেক্টরি দরকার .ssh, একটি .gitconfig- এর মতো সরঞ্জামগুলি (সেই সরঞ্জামগুলির মধ্যে সীমাবদ্ধ নয়) যা অনুমান করে যে এটি সেগুলি ব্যবহার করে একজন ব্যক্তি হবেন, এবং ব্যবহারকারী-কনফিগারেশনটি ভিতরে যায় ~/...। সাধারণত, ইউনিক্স heritageতিহ্য থেকে সরঞ্জাম tools

আসল প্রশ্ন

সুতরাং - কোনও স্থানীয় ব্যবহারকারীর জন্য ব্যবহারকারী-প্রোফাইল তৈরি করার জন্য উইন্ডোজকে বলার মতো কোনও প্রোগ্রামিক (পছন্দসইভাবে পাওয়ারশেল, বা বক্স-অফ-বক্স-কমান্ড-লাইন) উপায় কি আছে?

অথবা, অন্য কোনও কাজের ক্ষেত্র?

যে জিনিসগুলি আমি এখনও চেষ্টা করতে চাইছি:

  • একটি এনএসএসএম প্রারম্ভ / প্রাক হুক যা অন্যত্র থেকে ফাইলগুলি ব্যবহারকারী-প্রোফাইল ডিরেক্টরিতে অনুলিপি করে যা উইন্ডোজের গুণাবলী দ্বারা আশা করা যায় যে এই মুহুর্তে বিদ্যমান , সার্ভিস শুরু প্রারম্ভকালে সামনে হুক চলমান মোড়কের NSSM করার হস্তান্তর নিয়ন্ত্রণ তারপর ব্যবহারকারী-প্রোফাইল তৈরি।
  • প্রকৃত ব্যবহারকারী-প্রোফাইল ডিরেক্টরি বাদে পরিষেবাটি অন্য কোথাও হওয়ার জন্য USERPROFILE পরিবেশের পরিবর্তনশীল সেট করা। এটি আমাকে মারাত্মকভাবে অফ পিস্ট হিসাবে মারবে তবে এটি ভাল কাজও করতে পারে।

অন্যান্য প্রসঙ্গ:

  • উইন্ডোজ সার্ভার 2016, ডেস্কটপের অভিজ্ঞতা।
    • কোর / ন্যানো ব্যবহার করতে পারবেন না।
  • প্লেতে কোনও সক্রিয় ডিরেক্টরি নেই। হবে না।
  • এগুলি স্থানীয় ব্যবহারকারী।
  • আমি আনসিবলের মাধ্যমে এটি করছি, যা উইন্ডোজ বিষয়গুলির জন্য হুডের অধীনে পাওয়ারশেল ব্যবহার করছে। বিশেষত win_user মডিউলটি, সহ।
  • আমি একটি C:\users\default(এর সমতুল্য) তৈরি করতে চাই না/etc/skel ) , কারণ সেখানে কয়েকটি পৃথক পরিষেবা ব্যবহারকারী রয়েছে এবং একটি আকার সবই মানায় না। এটি ব্যবহারকারী-প্রোফাইল তৈরি করার সময়ও প্রভাব ফেলবে না, এটি যখন থাকবে তখন এটিতে কী হবে।
  • আমি পরিষেবাগুলি পরিচালনা করতে এনএসএসএম ব্যবহার করছি ।

জিনিস আমি চেষ্টা করেছি

  • পরিষেবাটি শুরু করা এবং উইন্ডোজকে ডিরেক্টরি তৈরি করার অনুমতি দেওয়া
    • আমি এটি করতে চাই না, কারণ পরিষেবাটি শুরুর আগে গোপনীয়তার প্রয়োজন হয় এবং তাই আমি যদি আমার চিত্র-বেকিং প্রক্রিয়াটির মধ্যে এটি করি তবে আমার সেগুলি পরিষ্কার করা দরকার, এবং আমার পরিষেবাটি এটি না করে তাও নিশ্চিত করে ফেলছি service বেকিং পর্যায়ে কোনও কাজ। আমি এই দুর্বোধ্য বিট উভয় এড়াতে চাই।

1
আপনি কি বিকল্পগুলি net user(যেমন /HOMEDIRবা /PROFILEPATH) চেক করেছেন ? । দেখুন net user /help। আমার (স্বাক্ষরিত) বোঝাপড়া থেকে আপনি ব্যবহারকারীর জন্য একটি ডিরেক্টরি তৈরি করতে পারেন এবং এটি /HOMEDIRস্যুইচ দিয়ে হোমডির হিসাবে সেট করতে পারেন।
সোভেন

আমি কী জিজ্ঞাসা করতে পারি যে এমন কোন ব্যবহারের ক্ষেত্রে আপনার সক্রিয় ডিরেক্টরি এড়ানো যায়? বিজ্ঞাপনগুলি দিয়ে জিনিসগুলি আরও সহজ হবে। উৎসুক.
ওন্দ্রেজ টুকি

আমি এডি এড়িয়ে চলেছি কারণ মেশিনগুলি ক্ষুদ্রতর; জীবনকাল কয়েক ঘন্টার মধ্যে পরিমাপ করা হয়, দিন নয়। মেশিনগুলি ক্লিন-রুম বিল্ড-এনভায়রনমেন্টগুলি হোস্ট করছে। কোনও এডি আসার সময় এবং তার বাইরে জাগলিং মেশিনগুলি কেবল এটির জন্য মূল্যহীন নয় ( আপনি যদি আগ্রহী হন তবে মিডিয়াম.com/palantir/active-directory-as-code-e9666a2e548d দেখুন )।
পিটার মাউসন

@ স্যাঁ হ্যাঁ - দুঃখের বিষয় তাদের দু'জনের মধ্যেই কেউ প্রোফাইল তৈরি না করে, এমনকি তারা পথ নির্ধারণ করলেও।
পিটার মাউসন

উত্তর:


23

উইন্ডোজ ক্রেডিটপ্রোফিল এপিআই ব্যবহার করে চাহিদা অনুযায়ী একটি ব্যবহারকারী প্রোফাইল তৈরি করতে পারে

তবে, যদি এই অপারেশনটি সম্পাদন করতে এক্সিকিউটেবল তৈরি করতে না চান তবে আপনি পাওয়ারশেলে এপিআই কল করতে পারেন। অন্যরা ইতিমধ্যে এটি সম্পন্ন করেছেন: উদাহরণ গিথুবে

কোডের প্রাসঙ্গিক অংশ:

$methodName = 'UserEnvCP'
$script:nativeMethods = @();

Register-NativeMethod "userenv.dll" "int CreateProfile([MarshalAs(UnmanagedType.LPWStr)] string pszUserSid,`
  [MarshalAs(UnmanagedType.LPWStr)] string pszUserName,`
  [Out][MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszProfilePath, uint cchProfilePath)";

Add-NativeMethods -typeName $MethodName;

$localUser = New-Object System.Security.Principal.NTAccount("$UserName");
$userSID = $localUser.Translate([System.Security.Principal.SecurityIdentifier]);
$sb = new-object System.Text.StringBuilder(260);
$pathLen = $sb.Capacity;

Write-Verbose "Creating user profile for $Username";
try
{
    [UserEnvCP]::CreateProfile($userSID.Value, $Username, $sb, $pathLen) | Out-Null;
}
catch
{
    Write-Error $_.Exception.Message;
    break;
}

আপনাকে অনেক ধন্যবাদ, এটি আমার জন্য কাজ করে। অন্যদের কাছে দ্রষ্টব্য - নিবন্ধভুক্ত-নেটিমেথোড এবং অ্যাড-নেটিভমেথডস ফাংশনগুলি লিঙ্কযুক্ত সূত্রের মধ্যে রয়েছে।
পিটার মাউসন

17

আপনাকে যা করতে হবে তা হল সেই ব্যবহারকারী হিসাবে একটি কমান্ড চালানো, উইন্ডোজ প্রোফাইল তৈরি করবে:

psexec.exe -u foobar -p Abcd123! cmd.exe /c exit

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec


1
সুতরাং এখানে যা ঘটছে তা হ'ল psexec লোকহোস্টের সাথে ইউজারনেম এবং পাসওয়ার্ডের সাথে সংযোগ স্থাপন করা -uএবং অবিলম্বে প্রস্থান করার জন্য -pচালু cmdকরা উচিত। আমি কিছু মিস করেছি? এটি কিছুটা বিপরীত শোনায় - অস্তিত্বহীন ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ সিস্টেমের সাথে সংযোগ স্থাপনে একটি ত্রুটি হওয়া উচিত। ওটা কিভাবে কাজ করে ?
সের্গেই কোলোডিয়াজনি

1
@ সার্জিকিলোডিএজনি: আপনি কেন মনে করেন যে এটি কোনও অস্তিত্বের ব্যবহারকারীর নাম এবং পাসওয়ার্ড নয়? প্রশ্নটিতে এটি একই ব্যবহার, স্পষ্টতই উদাহরণ হিসাবে ...
বেন ভয়েগ্ট

1
@ বেনভয়েট ভাল, আমি প্রশ্নের উপরের অংশটি মিস করেছি। আমি ভেবেছিলাম ওপিও ব্যবহারকারী তৈরি করতে চায় এবং এই উত্তরটি করার কথা ছিল। মন্তব্যটির শেষ অংশটি একটি ভুল বোঝাবুঝি।
সের্গেই কোলোডিয়াজনি

@ বেনভয়েগ্ট যদিও আমার এখনও একটি প্রশ্ন আছে। ওপিতে উল্লেখ করা হয়েছে "আমি সি: \ ব্যবহারকারীদের ডিফল্ট তৈরি করতে চাই না"। সুতরাং যখন এই পদ্ধতিটি ব্যবহার করা হবে তখন ব্যবহারকারীর প্রোফাইলটি কোথা থেকে আসবে এবং উইন্ডোজ কীভাবে নির্দিষ্ট প্রি-কনফিগার ডিরেক্টরিগুলি তৈরি করতে জানতে পারে যদি না থেকে C:\users\defaults?
সের্গেই কোলোডিয়াজনি

1
@ সের্গি কলোডিএজনি: খুব নিশ্চিত ওপি মানেই সে সি: \ ব্যবহারকারীগণ \ ডিফল্ট ... কাস্টমাইজ করতে চায় না এটি পুরোপুরি অনুপস্থিত হবে এমন নয়। উইন্ডোজ হোম ডিরেক্টরি সি তৈরি করবে: \ ব্যবহারকারীগণ the প্লেইন ভ্যানিলা সি: \ ব্যবহারকারীদের ডিফল্ট থেকে অনুলিপি করে, তারপরে এটি উপস্থিত হলে ওপি তার বিশেষ সসটি সি: \ ব্যবহারকারীদের oo ফুবারে প্রয়োগ করতে পারে যেখানে এটি অন্য কোনওটিকে প্রভাবিত করবে না ব্যবহারকারীদের।
বেন ভয়েগ্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.