דילוג לתוכן

עזרה הדדית - מחשבים וטכנולוגיה

23.6k נושאים 258.2k פוסטים
  • סקר | מה שתי חברת המחשבים המומלצת ביותר

    נעוץ נעול
    1
    93 הצבעות
    1 פוסטים
    5k צפיות
    אין תגובות
  • סקר | מה תוכנת האנטי וירוס המועדפת עליך

    נעוץ נעול
    2
    97 הצבעות
    2 פוסטים
    4k צפיות
    Men770M
    כדי לראות את התוצאות בוחרים 'בטל', וכדי לראות את ההצבעות לוחצים על מספר המצביעים. כדי להצביע ו/או לראות מי הצביע לכל בחירה, יש להיות מחוברים לחשבון בפורום.
  • 12 הצבעות
    272 פוסטים
    7k צפיות
    י. פל.י
    בנוסף, אני מעוניין ליצור מראה אחיד לתוכנה, מקצה לקצה. אם מישהו מכיר אזור, ווידג'ט וכו' שונים, אשמח שיכתוב לי! למשל, אם אני לא מספיק מובן: הטאבים בלוח השנה [זמנים/אירועים], אינם דומים לטאבים של הספרים. או, עד עכשיו, תפריט הלחצן הימני היה שונה בפתיחת ספרים, מהתפריט הרגיל. @יאיר-דניאל @יהודי-צעיר @איש-שלו
  • בעיה | הצילו!! עזרה דחופה בהתקנת דרייברים למחשב

    99
    0 הצבעות
    99 פוסטים
    211 צפיות
    א
    בדקת בביוס שמופיע שמותקן wi fi
  • בירור | הורדת פודקאסטים בשיטס

    לא נפתר
    1
    0 הצבעות
    1 פוסטים
    12 צפיות
    אין תגובות
  • המלצה | סקירת מספר אוזניות בלוטוס - מנסיון אישי

    94
    43
    32 הצבעות
    94 פוסטים
    3k צפיות
    A
    @חיים-יענקל-0 כתב בהמלצה | סקירת מספר אוזניות בלוטוס - מנסיון אישי: לי יש את ה-4 פרו, איך ה 4 פרו נקרא בעלי? יש קישור?
  • 16 הצבעות
    47 פוסטים
    327 צפיות
    שלמה רביבש
    @אלימיר כתב בשיתוף | הכירו את QuickNote Genius! ! התוכנה ליצירת פתקיות מהירות שתעשה לכם את החיים טובים יותר!!!! גירסה V13: @שלמה-רביב כתב בשיתוף | הכירו את QuickNote Genius! ! התוכנה ליצירת פתקיות מהירות שתעשה לכם את החיים טובים יותר!!!! גירסה V13: @a.y.f. ו @אלימיר אני רואה שאתם משתמשים בגירסה הישנה תעברו לגירסה החדשה היא הרבה יותר טובה בכל הבחינות Spoiler @a.y.f. הגירסה החדשה נראת ככה ואין לה את הבאג בתפריט[image: 1765543404184-b93e09cd-7ccf-4a88-97ad-2988d9c9ee85-image.png] אני מבין את זה, אבל הגירסה שמופיעה בפוסט הראשון היא הישנה, איפה החדשה? עודכנה עכשיו היא בפוסט הראשון
  • 4 הצבעות
    4 פוסטים
    46 צפיות
    י. פל.י
    @ARISH עובד גם כיום? אחרי שגוגל הפסיקו את הנדיבות?
  • להורדה | ShieldBox Pro - הכירו את נועל הקבצים החדש!!!!!!

    26
    3
    10 הצבעות
    26 פוסטים
    470 צפיות
    מתכנת חובבמ
    @יהודי-זה-הכי זה יעבוד לך רק במחיצות NTFS בכל אופן בניתי משהו עם ג'מיני (2 פרומפטים סך הכל) לא ממליץ להשתמש בזה אבל הנה זה כאן import os import threading import queue import customtkinter as ctk from tkinter import filedialog, messagebox import win32security import win32api import win32net import win32con import ntsecuritycon as ntc # --- הגדרות עיצוב --- ctk.set_appearance_mode("Dark") ctk.set_default_color_theme("blue") # --- מנוע הליבה (Native Win32 Security) --- class WinApiEngine: PERMISSIONS_MAP = { "F": ntc.GENERIC_ALL, "M": ntc.GENERIC_WRITE | ntc.GENERIC_READ | ntc.DELETE, "R": ntc.GENERIC_READ | ntc.GENERIC_EXECUTE, "W": ntc.GENERIC_WRITE } def __init__(self, update_callback): self.update_callback = update_callback self.stop_event = threading.Event() def get_sid(self, user_name): try: sid, _, _ = win32security.LookupAccountName(None, user_name) return sid except Exception: return None def apply_permission(self, path, user_list, action, perm_char): try: sids = [self.get_sid(u) for u in user_list if self.get_sid(u)] if not sids: return False sd = win32security.GetFileSecurity(path, win32security.DACL_SECURITY_INFORMATION) dacl = sd.GetSecurityDescriptorDacl() or win32security.ACL() access_mask = self.PERMISSIONS_MAP.get(perm_char, ntc.GENERIC_READ) inheritance = win32security.CONTAINER_INHERIT_ACE | win32security.OBJECT_INHERIT_ACE for sid in sids: if action == "grant": dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, inheritance, access_mask, sid) elif action == "deny": dacl.AddAccessDeniedAceEx(win32security.ACL_REVISION, inheritance, access_mask, sid) sd.SetSecurityDescriptorDacl(1, dacl, 0) win32security.SetFileSecurity(path, win32security.DACL_SECURITY_INFORMATION, sd) return True except Exception as e: # self.update_callback(f"Error on {path}: {e}") # פתח אם אתה רוצה לוג מלא על שגיאות return False def process_recursive(self, root_path, user_list, action, perm_char, recursive): count = 0 if self.stop_event.is_set(): return # טיפול בתיקייה הראשית if self.apply_permission(root_path, user_list, action, perm_char): count += 1 if recursive: for root, dirs, files in os.walk(root_path): if self.stop_event.is_set(): break for name in dirs + files: if self.apply_permission(os.path.join(root, name), user_list, action, perm_char): count += 1 if count % 100 == 0: self.update_callback(f"[RUNNING] Updated {count} objects...") self.update_callback(f"[COMPLETE] Finished. Total objects updated: {count}") def start(self, path, users, action, perm, recursive): self.stop_event.clear() threading.Thread(target=self.process_recursive, args=(path, users, action, perm, recursive), daemon=True).start() # --- מנוע סיווג משתמשים (User Classifier) --- class UserManager: @staticmethod def fetch_categorized_principals(): """ מחזיר מילון עם 3 מפתחות: 'humans', 'system', 'groups'. משתמש ב-Win32Net API כדי לנתח דגלים. """ data = { "humans": [], "system": [], "groups": [] } # 1. שליפת משתמשים (Level 2 נותן לנו Flags ו-Privileges) try: users, _, _ = win32net.NetUserEnum(None, 2) # רשימת "רעש" ידועה של משתמשים טכניים technical_keywords = ["docker", "nvidia", "vmware", "wdag", "default", "guest", "support_388945a0"] for u in users: name = u['name'] flags = u['flags'] # UF_ACCOUNTDISABLE = 2. אם הביט דלוק, המשתמש מושבת. is_disabled = (flags & win32con.UF_ACCOUNTDISABLE) # בדיקה יוריסטית: האם זה משתמש טכני? is_technical = any(k in name.lower() for k in technical_keywords) entry = {'name': name, 'active': not is_disabled} if is_technical or is_disabled: # הולך לסיסטם אם הוא טכני או מנוטרל data["system"].append(entry) else: # הולך לבני אדם רק אם הוא פעיל ולא טכני data["humans"].append(entry) except Exception as e: print(f"User Enum Error: {e}") # 2. שליפת קבוצות try: groups, _, _ = win32net.NetLocalGroupEnum(None, 0) for g in groups: data["groups"].append({'name': g['name'], 'active': True}) # Principals מיוחדים שתמיד טוב שיהיו special = ["Everyone", "Authenticated Users", "SYSTEM", "Interactive"] for s in special: data["groups"].append({'name': s, 'active': True}) except Exception as e: print(f"Group Enum Error: {e}") # מיונים for key in data: data[key] = sorted(data[key], key=lambda x: x['name']) return data # --- ממשק המשתמש (UI) --- class App(ctk.CTk): def __init__(self): super().__init__() self.title("Permission Master - Native & Categorized") self.geometry("1000x750") self.engine = WinApiEngine(self.log_message) self.log_queue = queue.Queue() self.all_data = {} # כאן יישמרו המשתמשים לפי קטגוריות self.selected_users_list = [] self.selected_path = ctk.StringVar() self.create_layout() self.load_users_async() self.check_queue() def create_layout(self): # Header top_frame = ctk.CTkFrame(self) top_frame.pack(fill="x", padx=20, pady=15) self.path_entry = ctk.CTkEntry(top_frame, textvariable=self.selected_path, placeholder_text="Select target folder...", width=600) self.path_entry.pack(side="left", padx=10, pady=10) ctk.CTkButton(top_frame, text="Browse", command=self.browse_folder, width=100).pack(side="left") # Main Content Area content_frame = ctk.CTkFrame(self, fg_color="transparent") content_frame.pack(fill="both", expand=True, padx=20, pady=5) # --- Left Column: User Selector --- left_col = ctk.CTkFrame(content_frame, width=350) left_col.pack(side="left", fill="both", expand=True, padx=(0, 10)) # Segmented Button for Filtering ctk.CTkLabel(left_col, text="Source Principals", font=("Arial", 14, "bold")).pack(pady=5) self.filter_seg = ctk.CTkSegmentedButton(left_col, values=["Humans", "Groups", "System/Apps"], command=self.change_filter) self.filter_seg.set("Humans") self.filter_seg.pack(pady=5, padx=10) self.scroll_users = ctk.CTkScrollableFrame(left_col) self.scroll_users.pack(fill="both", expand=True, padx=5, pady=5) # --- Right Column: Selected Targets --- right_col = ctk.CTkFrame(content_frame, width=350) right_col.pack(side="right", fill="both", expand=True, padx=(10, 0)) header_right = ctk.CTkFrame(right_col, fg_color="transparent") header_right.pack(fill="x", pady=5) ctk.CTkLabel(header_right, text="Apply To List", font=("Arial", 14, "bold")).pack(side="left", padx=10) ctk.CTkButton(header_right, text="Clear", width=50, height=20, fg_color="darkred", command=self.clear_selection).pack(side="right", padx=10) self.scroll_targets = ctk.CTkScrollableFrame(right_col) self.scroll_targets.pack(fill="both", expand=True, padx=5, pady=5) # --- Footer: Actions --- footer = ctk.CTkFrame(self) footer.pack(fill="x", padx=20, pady=15) # Options opts = ctk.CTkFrame(footer, fg_color="transparent") opts.pack(side="left", padx=10) self.action_var = ctk.StringVar(value="grant") ctk.CTkRadioButton(opts, text="GRANT Permissions", variable=self.action_var, value="grant").grid(row=0, column=0, padx=10, sticky="w") ctk.CTkRadioButton(opts, text="DENY Permissions", variable=self.action_var, value="deny", text_color="#ff5555").grid(row=1, column=0, padx=10, sticky="w") self.perm_combo = ctk.CTkComboBox(opts, values=["F (Full Control)", "M (Modify)", "R (Read)", "W (Write)"], width=150) self.perm_combo.grid(row=0, column=1, padx=10) self.recursive_var = ctk.BooleanVar(value=True) ctk.CTkCheckBox(opts, text="Recursive", variable=self.recursive_var).grid(row=1, column=1, padx=10) # Big Button self.btn_run = ctk.CTkButton(footer, text="EXECUTE", font=("Arial", 16, "bold"), fg_color="green", height=50, command=self.start_execution) self.btn_run.pack(side="right", fill="x", expand=True, padx=20, pady=10) # Log self.log_textbox = ctk.CTkTextbox(self, height=80, state="disabled") self.log_textbox.pack(fill="x", padx=20, pady=(0, 15)) # --- Logic --- def load_users_async(self): loading = ctk.CTkLabel(self.scroll_users, text="Loading System Principals...") loading.pack(pady=20) def _load(): data = UserManager.fetch_categorized_principals() self.all_data = data self.after(0, lambda: self.change_filter("Humans")) threading.Thread(target=_load, daemon=True).start() def change_filter(self, value): # מנקה את התצוגה for widget in self.scroll_users.winfo_children(): widget.destroy() # מיפוי השם בכפתור למפתח במילון הנתונים key_map = {"Humans": "humans", "Groups": "groups", "System/Apps": "system"} category_data = self.all_data.get(key_map.get(value), []) if not category_data: ctk.CTkLabel(self.scroll_users, text="No items found in this category").pack(pady=10) return for item in category_data: name = item['name'] active = item['active'] # צבע שונה למשתמשים לא פעילים (רלוונטי בעיקר בקטגוריית System) color = "white" if active else "gray" suffix = "" if active else " (Disabled)" btn = ctk.CTkButton( self.scroll_users, text=f"{name}{suffix}", fg_color="transparent", border_width=1, border_color="#404040", text_color=color, anchor="w", command=lambda u=name: self.add_to_target(u) ) btn.pack(fill="x", pady=2) def add_to_target(self, user): if user not in self.selected_users_list: self.selected_users_list.append(user) self.refresh_targets_ui() def remove_from_target(self, user): if user in self.selected_users_list: self.selected_users_list.remove(user) self.refresh_targets_ui() def clear_selection(self): self.selected_users_list.clear() self.refresh_targets_ui() def refresh_targets_ui(self): for widget in self.scroll_targets.winfo_children(): widget.destroy() for user in self.selected_users_list: row = ctk.CTkFrame(self.scroll_targets, fg_color="transparent") row.pack(fill="x", pady=2) ctk.CTkLabel(row, text=user).pack(side="left", padx=5) ctk.CTkButton(row, text="X", width=30, fg_color="#aa0000", hover_color="red", command=lambda u=user: self.remove_from_target(u)).pack(side="right") def browse_folder(self): p = filedialog.askdirectory() if p: self.selected_path.set(p) def log_message(self, msg): self.log_queue.put(msg) def check_queue(self): try: while True: msg = self.log_queue.get_nowait() self.log_textbox.configure(state="normal") self.log_textbox.insert("end", msg + "\n") self.log_textbox.see("end") self.log_textbox.configure(state="disabled") except queue.Empty: pass self.after(100, self.check_queue) def start_execution(self): path = self.selected_path.get() if not path or not self.selected_users_list: messagebox.showerror("Error", "Please select path and users.") return self.engine.start(path, self.selected_users_list, self.action_var.get(), self.perm_combo.get().split()[0], self.recursive_var.get()) if __name__ == "__main__": app = App() app.mainloop() הוא טען שיש פה "מנוע יוריסטי" לזיהוי סוגי משתמשים כשזה סף הכל רשימה מצומצמת של מילות מפתח בקיצור, סתם לכיף
  • בירור | חלון קופץ בעת פתיחת כרום

    3
    1
    0 הצבעות
    3 פוסטים
    24 צפיות
    מ
    @נשרפון [image: 1765541249657-b64827ea-d28c-47dc-a29e-16659d21b14c-image.png]
  • בירור | לנדבוט לא עובד?

    2
    0 הצבעות
    2 פוסטים
    25 צפיות
    י
    @יצחק-הצוחק כתב בבירור | לנדבוט לא עובד?: לאחרונה אני מנסה להיכנס ללנדבוט ואני לא מצליח מישהו יודע מה הבעיה? אשמך לתגובה!!!!!!
  • 14 הצבעות
    19 פוסטים
    560 צפיות
    מ
    @תלמידהון זה כבר בחירה שלך יש כאלה שלא אכפת להם
  • בקשה | ווינדוס 10/11 להפעלה ניידת באמצעות ventoy

    1
    0 הצבעות
    1 פוסטים
    22 צפיות
    אין תגובות
  • בירור | פלאפון זול מעליאקספרס

    9
    0 הצבעות
    9 פוסטים
    131 צפיות
    ה
    @סתם-יהודי כתב בבירור | פלאפון זול מעליאקספרס: בקישור הראשון באמת יש אחד שמתלונן שזה לא G4 אבל בשני יש כמה שמדווחים שזה כן תואם, נקנה אותו ונדווח לציבור. תגיד האם קנית את הטלפון בקישור נשמח לשמוע גם האם אתה ממליץ, וכן האם יש אפשרות לשנות MIMI תודה
  • באג | באג | הטאצ'פד לא עובד

    7
    0 הצבעות
    7 פוסטים
    46 צפיות
    א
    איפוס דרך הביוס עצמו (אם אפשר להיכנס) הדלק את המחשב. כנס ל-BIOS ע"י לחיצה על F2 / DEL / ESC / F10 (תלוי בלוח). בתפריט חפש: Load Defaults Load Optimized Defaults Restore Defaults שמור ויצא – Save & Exit.
  • עזרה | פתרון להגבלת הדפסה באוצר החכמה בגרסה 21-22

    109
    0 הצבעות
    109 פוסטים
    6k צפיות
    א
    @zalmensmok כתב בעזרה | פתרון להגבלת הדפסה באוצר החכמה בגרסה 21-22: @אהרן כמה עמודים נסית? לא זוכר, כשיזדמן לידי אנסה שוב.
  • בקשה | מחיצת vbmeta_vendor_a של M36 - יש לך?

    9
    1
    0 הצבעות
    9 פוסטים
    29 צפיות
    מ
    @יאיר-דניאל כן
  • בירור | כונן D במחשב בשם HP_TOOLS ניתן למחיקה?

    11
    1 הצבעות
    11 פוסטים
    50 צפיות
    מ
    @בנימין-מחשבים תודה, יש לי אבל עוד 350 ג'יגה פנויים בכונן השני.
  • 0 הצבעות
    6 פוסטים
    66 צפיות
    E
    @אלישע-מואב-0 נתק תדיסק של המערכת הפעלה
  • בירור | הכונן של גוגל דרייב לוקח לי מקום במחשב?

    3
    0 הצבעות
    3 פוסטים
    45 צפיות
    מ
    [image: 1765453495506-67c8a78d-1e33-4009-b771-5eb6981d5468-image.png] זה תלוי בבחירה שבחרת בהגדרות באפשרות של העברת קבצים בסטרימינג אז הקבצים מאוחסנים בענן ויש רק כמו קישור על המחשב שלך אם בחרת את האפשרות השניה אז הקבצים מאוחסנים אצלך במחשב ותופסים נפח בכונן שלך