سؤال

كنت دائمًا تحت الانطباع بأنه عندما تدير عملية مثل (domain\user) mydomain\myuser, ، عند استخدام Process.Start() ستبدأ هذه العملية الجديدة باستخدام نفس بيانات الاعتماد - mydomain\myuser.

المشكلة التي أواجهها هي أن بلدي Process.Start() يبدو أن المكالمة تنشئ عملية بموجب حساب النظام الذي يتسبب في مشكلات الإذن لي في عملية البدء (والتي يجب أن تعمل تحت حساب المسؤول بسبب العمل الذي يقوم به). إذا غيرت الأشياء - سأقوم بتفريغ هذه العملية (EXE مصممة خصيصًا) من داخل مثبت Windows.

أي اقتراحات؟ لقد قرأت عن سياسات مجموعة Windows (ربما) لها تأثير على هذا ، ولكن إذا كنت صادقًا ، فقد فقدت ذلك.

تحرير: مقتطف صغير:

أين exename و commandLine هي معلمات لهذا الهيكل هيئة:

ProcessStartInfo procInfo = new ProcessStartInfo(exeName, commandLine);
procInfo.WorkingDirectory = workingDirectory;
procInfo.UseShellExecute = false;
procInfo.CreateNoWindow = true;
Process process = Process.Start(procInfo);
Process.WaitForExit();
return process.ExitCode;
هل كانت مفيدة؟

المحلول

إما تعيين procinfo.useShellexecute إلى true ، أو تنفيذ CMD كعملية مع exe الخاص بك كمعلمة إلى الأمر cmd. عندما يتم ضبط Useshellexecute على خطأ ، إليك الكثير من الآثار الجانبية المثيرة للاهتمام: Useshellexecute

نصائح أخرى

انطباعك صحيح. ستبدأ Process.Start () العملية الجديدة دائمًا ضمن بيانات اعتماد المستخدم الحالية - ما لم تقدم بيانات اعتماد بديلة في ProcessStartInfo أو استخدم أحد الأحمال الزائدة التي تأخذ بيانات الاعتماد.

يجب أن تكون هناك مشكلة أخرى - شارك مقتطفًا من الكود الخاص بك.

تحديث

نعم! لم تذكر أي شيء عن المثبت. سيتم تشغيل جميع مثبتات MSI تحت النظام حيث سيتم تشغيلها بواسطة "مثبت الويندوز"والتي يمكنك التحقق منها وتركض تحت النظام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top