PDA

View Full Version : تو رو به خدا یکی کمک کنه...



satshop
دوشنبه 30 آذر 1383, 10:43 صبح
(در رابطه با سوال قبلی)
مشکل من در نام یوزری است که برنامه تحت آن اجرا میشود.یعنی همان نامی که در task manager در قسمت Process در جلوی برنامه نمایش داده میشود.
اگر برنامه را خودمان به صورت دستی اجرا کنیم این نام نام یوزر است و این به این معنی است که اجرا کننده این برنامه یوزر Login شده است و در این حالت برنامه به خوبی کار میکند.ولی زمانی که سرویس را توسط سیستم اجرا میکنیم
(در Service Manager در آدرس:
Control Panel => Administrative Tools => Services
نام سرویس را انتخاب و بر روی Start کلیک میکنیم) این نام System است یعنی برنامه تحت این یوزر اجرا شده است.
تا جایی که من خبر دارم برنامه توسط هر یوزری که اجرا شود فقط میتواند از اطلاعات آن یوزر استفاده کند.مثلا در این مورد فقط میتواند از رجیستری مربوط به آن یوزر آستفاده کند. (چون هر یوزر رجیستری مخصوص به خود دارد).
من در این برنامه از تابع GetUserName استفاده کرده ام.وقتی برنامه را به صورت سرویس اجرا شود برنامه نام System را به عنوان نام یوزر برمیگرداند.همینطور اگر توسط هر یوزر دیگری اجرا شود تام آن یوزر را برمیگرداند. من سعی کرم تا از یک برنامه واسطه استفاده کنم یعنی Service آن را اجرا کند و آن برنامه این اطلاعات را برگرداند.
ولی برنامه و اسطه هم چون توسط سرویس اجرا شده نام System به خود میگیرد.
من باید برنامه واسطه را با نام یوزر Login شده اجرا کنم.برای این کار باید از تابع CreateProcessAsUser استفاده کنم ولی این تابع خیلی دردسر داشت و من نتوانستم این کار را انجام دهم. :cry:
اگر شما نحوه استفاده از این تابع را میدانید ممنون میشوم اگر آن را در اختیار من بگذارید. :sunglass:
از اینکه سوال مرا خواندید متشکرم.

مهدی کرامتی
دوشنبه 30 آذر 1383, 11:22 صبح
1- در رابطه با کدام سوال قبلی؟

2- چرا در ادامه همان موضوع ننوشتید؟