سلام.
بازم مشکل با سرویس.
وقتی برنامم به صورت سرویس ران میشه نمیتونه در قسمت Hkey_current_user یوزری که ران هست بنویسه. چون Hkey_current_user خودشو داره. وقتی هم اطلاعات داخل Hkey_current_user رو توسط سرویس نمایش میدم با یوزر جاری تفاوت داره.
حالا چطور میشه توسط سرویس یوزر جاری رو شناسایی کرد و در Hkey_current_user اون نوشت و خوند؟
سلام.
دستت درد نکنه. این مقاله ها که در مورد رجیستریه اگه کارم رو هم راه نندازه ارزش خوندن رو داره. همشونو سیو کردم که بخونم.
سلام.
مقاله رو خوندم و برنامه رو دیدم. بسیار مفید بود.
ولی یه مشکلی هست. برنامه وقتی به عنوان سرویس ران شه یوزر سیستم رو با getusername بر میگردونه و در نتیجه sid مربوط به سرویس از HKEY_USERS به دست میاد. من باید با یه روشی یوزری که ران هست رو پیدا کنم. ولی سر این موضوع گیر کردم.
من که متوجه نشدم!
شما یوزر نیم رو به اون برنامه بده تا برات SID کاربر لاگین رو به دست بیاره
یادت باشه ممکنه چند تا کاربر در حالت لاگ آن باشند!
بعد که SID رو به دست آوردی از طریق HKU می تونی به تنظیمات اون کاربر دسترسی داشته باشی
پس مشکلت از چیه؟
سلام.
جواد عزیز برنامه که قرار نیست فقط تو سیستم پیمان با یوزر پیمان اجرا شه. شاید رو سیستم جواد با یوزر darg اجرا شه. حالا مشکل اینه که تابع GetUserName در حالت سرویس رو هر سیستمی که باشه یوزر سیستم رو بر میگردونه. منم که یوزر کامپیوتر شما رو نمیدونم. حالا چطور برنامم رو سیستم شما کار کنه؟
یه کلک رشتی به ذهنم رسید که برم به Documents and Settings و لیست فولدرها رو ببینم که هیدن نیستند. هر کدوم نشون دهنده یه یوزر هست. ولی طبق معمول این روش های غیر استاندارد مشکلات خاص خودشو داره. مثلا اگه بعضی مواقع که یوزر رو میسازی و پاک میکنی و دوباره میسازی تو این مسیر در انتهای نام یوزر حرف 2 رو قرار میده که همه معادلات رو به هم میریزه.
احتمالا ای پی آی برای پیدا کردن یوزرها وجود داره. حالا روش حرفه ای برای پیدا کردن یوزرها چیه؟
سلام.
فکر کنم این توابع برای پیدا کردن لیست یوزرها باشن.
NetUserEnum
NetWkstaUserEnum
Text4.Text = ReadKey("HKEY_CURRENT_USER\Software\microsoft\Windows\CurrentVersion\Explorer\Logon User Name")
از این مسیر تو رجیستری میتونی یوزری که کاربر باش کار میکنه رو ببینی البته مسیرش رو خودم تو رجیستری پیدا کردم!

امید وارم به دردت بخوره
آخه مشکل این دوستمون اینه که به کلید HKCU کاربر جاری دسترسی نداره
احتمالا این داده ای که شما معرفی کرده باز هم اسم سیستم رو بر خواهد گردوند
این یکی مسیر رو هم چک کن ببین چیزی دستگیرت می شه:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy
اینو حتما کارت رو راه میندازه
HKEY_USERS\S-1-5-21-789336058-1844823847-725345543-1003\Software\Microsoft\Windows\CurrentVersion\Explorer
KEY VALUE:Logon User Name
اینم خودم کشف کردم
تازه یه روش برای فهمیدن این که yahoo messenger online هست یا نه کشف کردم که با این کار دیگه احتیاج به dll yahoo نیست.100% هم جواب داد وفایل server هم حجمش اومد پاین.
سلام.
همان طور که گفتم با تابع NetUserEnum تونستم یوزرهارو لیست کنم و با ترکیب این برنامه با برنامه جواد تونستم SID تمام یوزرهارو به دست بیارم.
جواد جان اگه خواستی سورس به دست آوردن یوزرها رو در اختیارت میذارم تا برنامتو کامل کنی. یعنی برنامت بتونه غیر از SID سیستم و لوکال سرویس و نتورک سرویس و ادمین و ... SID همه یوزرهای موجود رو سیستم رو هم شناسایی کنه.
حالا مشکل اینه که چطور بفهمم از بین این یوزرها که به دست اوردم کدوم یکی یوزری هست که هم اکنون کاربر داره باهاش کار میکنه. حتی اگه 10 تا یوزر هم زمان لاگین بودن من میخوام بتونم یوزر جاری رو تشخیص بدم.
سیما در مورد کلید اولی که گفتی جواد جوابتو داد. من به HKCU دسترسی ندارم.
Darg نوشته است:آخه مشکل این دوستمون اینه که به کلید HKCU کاربر جاری دسترسی نداره
احتمالا این داده ای که شما معرفی کرده باز هم اسم سیستم رو بر خواهد گردوند
این یکی مسیر رو هم چک کن ببین چیزی دستگیرت می شه:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy
جواد به مسیر مراجعه کردم. SID یوزرها و یوزر ادمین داخلش بود. ولی بازم سوالمو مطرح میکنم. چطور بفهمم کدوم SID مربوط به یوزر جاری هست؟
sima_6600 نوشته است:اینو حتما کارت رو راه میندازه
HKEY_USERS\S-1-5-21-789336058-1844823847-725345543-1003\Software\Microsoft\Windows\CurrentVersion\Explorer
KEY VALUE:Logon User Name
اینم خودم کشف کردم
تازه یه روش برای فهمیدن این که yahoo messenger online هست یا نه کشف کردم که با این کار دیگه احتیاج به dll yahoo نیست.100% هم جواب داد وفایل server هم حجمش اومد پاین.
سیما جان این SID مربوط به یوزر سیستم شماست نه من. هر یوزری SID خاص خودشو داره. این مسیر یه مسیر ثابت نیست که من بهش مراجعه کنم. در واقع HKEY_USERS\S-1-5-21-789336058-1844823847-725345543-1003 همون HKCU یا HKEY_CURRENT_USER هست که خاص یوزر شماست.