ايران ويج

نسخه‌ی کامل: پیدا کردن یوزر جاری بدون استفاده از geusername
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
بله ! خوب وضعیت های مختلفی میتونه پیش بیاد . به نظر بهتره WMI رو خودت مطالعه کنی تا بهتر بتونی تصمیم بگیری . من مطمئن هستم این تنها راحه حل درست و دقیق برای سرویس هست .

http://msdn2.microsoft.com/en-us/library/aa394582.aspx
سلام پیمان جان
آقا شرمنده می کنی
ما مخلصیم

نقل قول: اون تابعی که گذاشتی تو خود ویبی جواب میده. ولی وقتی کامپایل میکنم برنامه بسته میشه و صفحه سند ارور و دنت سند میاد.
آره راست می گی Sad
منم خودم موندم توش که مشکلش چیه که اینطوری می شه
چون از نظر منطقی هیچ مشکلی نداره
توابع ای پی آی نهایتش هم که درست کار نکن مقدار برگشتیشون تغییر
می کنه نه اینکه برنامه رو بترکونن Amaze
من تو ام اس دی ان هم که گشتم چیزی در این مورد پیدا نکردم
نقل قول: در مورد سرویس هم باید بگم این یه مشکل کلیه خسرو جان. اصلا به برنامه من ربط نداره. وقتی سرویست رو ران میکنی یوزر سیستم رو برمیگردونه. الآن من اگه برنامه رو بذارم بیشتر باعث گیج شدن میشه.
یعنی چی یوزر سیستم رو بر می گردونه ؟ من درست نمی فهمم Amaze
اگه فکر می کنی گزاشتن سورس کمکی به حل مشکل نمی کنه
عیبی نداره
نقل قول: ممد اون مساله که اکسپلورر تو کدوم یوزر ران شده به فکر خودم رسیده بود. ولی بعد گفتم شاید 2 تا یوزر ران باشن و در حالت سوییچ یوزر تو یکی از یوزرا باشیم. ولی میشه یه کاری کرد. قبل استفاده از این روش همه پروسه های اکسپلورر رو ببندیم.
نقل قول: پس اگر بتونیم نام یوزر این پروسس رو بدست بیاریم کار تمومه . این چیزی هست که اینجا توضیح داده شده و کد VB.Net براش ارائه شده .
ببین این برنامه من هم کارش تقریبآ همین بود دیگه
چون با تابع WTSGetActiveConsoleSessionId سشن آیدی یوزری رو که
الان توشیم رو می گرفتیم و می دادیم به تابع WTSQuerySessionInformation
و سپس این تابع نام یوزر رو می داد
البته ایده شما هم با ترکیب دو تابع ProcessIdToSessionId و GetCurrentProcessId عملی هست
ولی تابعی که نهایتآ باید با توجه به سشن آیدی نام یوزر رو بده همون
WTSQuerySessionInformation هست که خودتون هم دیدید مشکل ایجاد
می کنه
مگر اینکه تابعی باشه که براساس سشن آیدی کار نکنه و مثلآ برا اساس
پروسس آیدی کار کنه
سلام.
یادمه قبلا هم که رو ای پی آی های سرویس کار میکردم یه ای پی آی بود همین جور میزد برناممو میترکوند.

در مورد یوزر سیستم باید بگم وقتی برنامه ای به صورت عادی ران میشه تابع getusername یوزری که کاربر داخلش هست رو برمیگردونه. ولی اگه همون برنامه به صورت سرویس ران بشه تابع getusername یوزر System رو بر میگردونه. یه برنامه بنویس و به صورت سرویس ران کن تا نتیجشو ببینی. اینه که میگم مشکل کلیه.

من تابع createprocess رو هم چک کردم ولی باز برنامه ای که ران میشه سیستم برمیگردونه. ولی createprocessAsUser چی ؟ میتونه جواب بده؟
سلام
یافتممم At

بالعخره یافتم
کیف می کنید سماجت رو اصلا تو محل به من می گند دارگ سمجه Clap
باور کنید دیگه نمی تونم چشمام رو باز نگه دارم Amaze ...

خوب خود شیرینی بسه برم سراغ اصل ماجرا فقط امید وارم دیر نرسیده باشم
_____________________________

از اونجایی که مطمئن بودم ویندوز این مطلب رو تو یه جای رجیستری ثبت
می کنه خوب من هم تو رجیستری دنبالش رفتم...
بالعخره ویندوز باید از/به یه جایی نگه داری تنظیمات کنه دیگه.

کلید:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
زیر کلید هایی داره حاوی همون SID های کاربر های ویندوز
خوب
تو خود هر کدوم از اون زیر کلید های SID داده ای وجود داره به اسم:
RefCount

شما باید همه RefCount ها رو بخونید, حالا عدد هر کدوم از اون RefCount
ها بیشتر بود این نشون می ده که اون زیر کلید حاوی SID که RefCount بالاتری
داره همون کاربر جاری ویندوزه Happy

بای Cool
سلام.
ممنون که وقت گذاشتی جواد جان.
ولی فکر میکنم این روش اشتباست. تو رجیستری من همه RefCount ها 1 هستن به جز S-1-5-19 و S-1-5-20 که 2 هستن. من حتی یوزر رو عوض هم کردم باز همین حالت بود. در حالت سوییچ یوزر هم که به یوزرم برگشتم باز RefCount یوزرم 1 هست.
این لینک هم راه جالبی رو ارائه داده ! یه نگاه بهش بنداز :

http://support.microsoft.com/kb/111544
سلام.
آخه ممد اگه سرویس باشه ممکنه روش جواب نده.
سلام به همه دوستان
اگه مشکل به یوزر جاریه و اگه از رجیستری بخوای کمک بگیری می تونی از کلید:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
استفاده کنی
تو قسمت DefaultUserName اسم یوزر جاری رو نوشته که اگه بین یوزرها هم سوئیچ باشیم، یوزر جاری رو نشون میده

امیدوارم بدرد بخور باشه.
Payman62 نوشته است:این روش اشتباست. تو رجیستری من همه RefCount ها 1 هستن به جز S-1-5-19 و S-1-5-20 که 2 هستن. من حتی یوزر رو عوض هم کردم باز همین حالت بود. در حالت سوییچ یوزر هم که به یوزرم برگشتم باز RefCount یوزرم 1 هست.
خیلی عجیبه البته خود من هم کمی عجله کردم.
اما روی سیستم من کاملا جواب می ده.
ببین اون دو تا کاربر لوکال سرویس و نتورک سرویس و حتی لوکال سیستم که مشخصه نباید به عدد RefCount شون توجه کنی.
اما روی سیستم من در مورد بقیه کاربر ها هر وقت به یه کاربر لاگین یا سوئیچ
می کنم عدد RefCount یک عدد بالاتر می شه!
البته نه زمانی که به پنجره سوئیچ می رم و برمی گردم.
اما این شاخه ای که بهت معرفی کردم ProfileList باید کلید ماجرا باشه.
من با مانی تورینگ رجیستری به این شاخه رسیدم و این تنها مدخلیه
که ممکنه سیستم این اطلاعاتی که شما لازم داری رو درش ذخیره کنه.
مثلا داده دیگه ای اونجا هست که زمان آخرین ویرایش پروفایل کاربر رو بر می گردونه:
ProfileLoadTimeLow
ProfileLoadTimeHigh
اگر از این مسیر چیزی دستگیرت نشه باید گفت که چیزی که می خوای از
رجیستری غیر ممکنه, مثلا شاید این یک مورد خاص تو یه فایل ini دخیره بشه
که اون هم نمی دونم خیلی بعید به نظر می ره ویندوز XP از فایل استفاده کنه.
در هر حال اگر خودت با روش هایی که دوستان دیگه معرفی کردند به نتیجه
رسیدی حتما به ما هم اطلاع بده.

نقل قول: اگه مشکل به یوزر جاریه و اگه از رجیستری بخوای کمک بگیری می تونی از کلید:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
استفاده کنی
تو قسمت DefaultUserName اسم یوزر جاری رو نوشته که اگه بین یوزرها هم سوئیچ باشیم، یوزر جاری رو نشون میده
نه این داده فقط برای زمان ورود خودکار به یک اکانت کاربری کاربرد داره.
حتی با تغییر کاربر هم عوض نمی شه!
سلام.
اول باید بگم بهتره به جای واژه سماجت واژه پشتکار رو برای خودت به کار ببری.

بعد هم این که ProfileLoadTimeLow و ProfileLoadTimeHigh توجه من رو هم به خودشون جلب کردن. اگه تاریخ آخرین مراجعه به یوزر باشه هر کدوم که به تاریخ و ساعت کنونی نزدیک تر باشه میشه یوزر جاری. ولی باید از مقدار ولیو ها سر در اورد.

اگر تو فایل هم ذخیره شه که کار مشکل میشه و به سختی میشه فهمید کجا و تو چه فایلی ذخیره میشه.
سلام.
جواد این روش برای حالت سوییچ یوزر هم برات جواب میده؟
چون من یوزرای آفم 0 هستن و یوزرای آن 1. وقتی سوییچ یوزر میکنم 2 تا یوزر 1 میشن. همون refcount رو میگم.
صفحه‌ها: 1 2 3