[DllImport("user32.dll")]
public static extern void LockWorkStation();
// The function to switch user/lock the computer
void foo() { LockWorkStation(); }
כאשר החשבון נעול מפני מנגנון הגנת משפחה (Family Safety Monitor by Microsoft Corporation), ומאפשר למשל כניסה הבאה רק ב-8 בבוקר, ניתן לפרוץ אותו בדרך הבאה:
להדליק ולכבות את המחשב לפני שהוא נכנס ל-windwos מספר פעמים עד שהמחשב יעלה במצב לתיקון בעיות אתחול.
יש להוסיף את הקוד הזה בתחילת הקובץ, ובסופו את הקוד שנרצה להריץ בתור מנהלי מערכת:
@echo off
:: BatchGotAdmin (Run as Admin code starts)
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:: BatchGotAdmin (Run as Admin code ends)
:: Your codes should start from the following line
אפשר 'להתחכם' ולהחביא קובץ ZIP שנרצה לשמור סודי,
ולשנות את סיומת הקובץ לכל סיומת שנבחר, למשל jpg .
אבל ברגע שננסה לפתוח את ה'תמונה' החדשה שעכשיו יצרנו ניתקל בהודעת שגיאה.
בשביל ליצור קובץ תמונה תקני שיתפקד כקובץ zip בשינוי סיומת הקובץ, יש לנקוט צעדים הבאים:
1. מקם את שני הקבצים , למשל - snir.jpg , elgabsi.zip - באותה תיקיה.
2. הקלד את הפקודה:
copy /b snir.jpg + elgabsi.zip ha_gever.jpg
כאשר ha_gever.jpg יהיה הקובץ הסופי שיכיל את שני הקבצים - המכווץ והתמונה - יחד . b/ משמעו קיצור ל "בינארי". הפקודה 'תעתיק' יחד את שני הקבצים.
סדר רישום הקבצים בפקודה חשוב.
3. כעת נוצר הקובץ הסופי - ha_gever.jpg (אפשרי גם ליצור קובץ סופי בכל פורמט).
שנה את סיומת הקובץ ע"מ להשתמש בו במתכונתו האחרת.
Option Explicit
Dim objshell,path,DigitalID, Result
Set objshell = CreateObject("WScript.Shell")
'Set registry key path
Path = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\"
'Registry key value
DigitalID = objshell.RegRead(Path & "DigitalProductId")
Dim ProductName,ProductID,ProductKey,ProductData
'Get ProductName, ProductID, ProductKey
ProductName = "Product Name: " & objshell.RegRead(Path & "ProductName")
ProductID = "Product ID: " & objshell.RegRead(Path & "ProductID")
ProductKey = "Installed Key: " & ConvertToKey(DigitalID)
ProductData = ProductName & vbNewLine & ProductID & vbNewLine & ProductKey
'Show messbox if save to a file
If vbYes = MsgBox(ProductData & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "BackUp Windows Key Information") then
Save ProductData
End If
'Convert binary to chars
Function ConvertToKey(Key)
Const KeyOffset = 52
Dim isWin8, Maps, i, j, Current, KeyOutput, Last, keypart1, insert
'Check if OS is Windows 8
isWin8 = (Key(66) \ 6) And 1
Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4)
i = 24
Maps = "BCDFGHJKMPQRTVWXY2346789"
Do
Current= 0
j = 14
Do
Current = Current* 256
Current = Key(j + KeyOffset) + Current
Key(j + KeyOffset) = (Current \ 24)
Current=Current Mod 24
j = j -1
Loop While j >= 0
i = i -1
KeyOutput = Mid(Maps,Current+ 1, 1) & KeyOutput
Last = Current
Loop While i >= 0
keypart1 = Mid(KeyOutput, 2, Last)
insert = "N"
KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0)
If Last = 0 Then KeyOutput = insert & KeyOutput
ConvertToKey = Mid(KeyOutput, 1, 5) & "-" & Mid(KeyOutput, 6, 5) & "-" & Mid(KeyOutput, 11, 5) & "-" & Mid(KeyOutput, 16, 5) & "-" & Mid(KeyOutput, 21, 5)
End Function
'Save data to a file
Function Save(Data)
Dim fso, fName, txt,objshell,UserName
Set objshell = CreateObject("wscript.shell")
'Get current user name
UserName = objshell.ExpandEnvironmentStrings("%UserName%")
'Create a text file on desktop
fName = "C:\Users\" & UserName & "\Desktop\WindowsKeyInfo.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile(fName)
txt.Writeline Data
txt.Close
End Function
כתיבה וטעינה של קבצי XML בשפת c#
ניתן לכתוב/לקרוא XML לכל סוג של מחלקה/אובייקט, גם אם יהיה זה אובייקט בסיסי (לדוגמה string) או מחלקה שנוצרה על-ידי המשתמש:
publicclassSnirXmlHandler
{
///<summary>save xml</summary>
publicstaticvoid Save<T>(T t, string filename)
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextWriter textWriter = new StreamWriter(filename))
{
serializer.Serialize(textWriter, t);
textWriter.Close();
}
}
catch (Exception ex) { throw; }
}
///<summary>load xml file</summary>
publicstatic T
Load<T>(string filename)
{
T t;
try
{
XmlSerializer deserializer = new XmlSerializer(typeof(T));
using (TextReader textReader = new StreamReader(filename))
{
t =
(T)deserializer.Deserialize(textReader);
textReader.Close();
}
}
catch (Exception ex) { throw; }
return t;
}
}
שימוש לדוגמה:
public class MyClass
{
public string Name { get; set; }
public int[] Age { get; set; }
public MyClass2 Mc2 { get; set; }
}
public class MyClass2
{
public int[] Num { get; set; }
}
class Program
{
static void Main(string[] args)
{
MyClass myclass = new MyClass()
{
Name = "snir",
Age = new int[] { 1, 2, },
Mc2 = new MyClass2
{
Num = new int[] { 10, 45 }
}
};
SnirXmlHandler.Save(myclass, "snir.xml");
MyClass mc = SnirXmlHandler.Load("snir.xml");
}
}
1. במאפיינים של קובץ ה-dll שנוסף בתור reference, יש לשנות את Copy Local=False
2. את אותו קובץ שהוספנו בתור reference יש לגרור אל תוך הפרויקט ב-solution explorer
3. יש לשנות את המאפיין של קובץ זה: Build Action=Embedded
4. יש להעתיק את הקוד הבא למקום שלפני Application.Run בתוך הקוד של exe:
יצרתי אתר אינטרנט וניסיתי להזין נתונים בעברית - אבל הכל נקלט כג'יבריש.
לאחר מעט שוטטיות באינטרנט התברר לי שהקולז'ן של בסיס הנתונים שלי הוא: SQL_Latin1_General_CP1_CI_AS כלומר לטינית. כדי לשנות אותו עשיתי:
USE master;
ALTER DATABASE elgabsiDb
COLLATE Hebrew_CI_AS;
כדי לבדוק מה הקולזן של בסיס הנתונים:
Select name,collation_name From sys.databases
התוצאה:
להלן מעט אתרים עם הפרטים, עד שאספיק לשבת ולכתוב הכל בצורה מסודרת: