|
Hi, i'm new on c#, i have a code from another post, i need to convert to c#, somebody can help me?
'***************************************************************************
'*
'* Delete Profiles script written by Joe Shonk ( joe@theshonkproject.com)
'* Version 1.9
'*
'* Syntax: cscript.exe DeleteProfiles.vbs [/H] [/E | /I <profilename>] [/C] [/R]
'* [/D <days>] [/L <filename>] [/V]
'*
'* This script is provided as-is, no warrenty is provided or implied.
'* The author is NOT responsible for any damages or data loss that may occur
'* through the use of this script. Always test, test, test before
'* rolling anything into a production environment.
'*
'* This script is free to use for both personal and business use, however,
'* it may not be sold or included as part of a package that is for sale.
'*
'* A Service Provider may include this script as part of their service
'* offering/best practices provided they only charge for their time
'* to implement and support.
'*
'* For distribution and updates go to: http://www.theshonkproject.com
'*
'***************************************************************************
On Error Resume Next
Const DeleteReadOnly = TRUE
Const HKEY_LOCAL_MACHINE = &H80000002
Const SIDExclusionList = "|S-1-5-18|S-1-5-19|S-1-5-20|"
'***************************************************************************
'* To add your own profiles to the exclusion list simply add the
'* account to the end of the strProfileExclusionList. Note: Each account
'* is delimited by a | (pipe) and is all lowercase
'*
Dim strProfileExclusionList
Dim strComputer, strLogFileName, strDocAndSettingsLocation
Dim strKeyPath, arrValueNames, arrValueTypes, arrSubKeys
Dim i, strHiveExclusionList, strHiveOpenSkipped, strHiveValue
Dim strSubKey, strGuid, strUserName, strProfileImagePath
Dim dwProfileExclusion, dwSIDExclusion, dwHiveOpenExclusion
Dim flgLogFile, flgWriteConsole, flgVerboseLog, flgAllowExecute, flgHelp
Dim dwArgCount, strNextArg, strCurrentArg, flgCustomExclusions, flgCustomExMatch
Dim strCustomExclusions, dateCurrentTime, flgCustomInclusions, strCustomInclusions
Dim flgCustomInMatch, flgExDateMatch, flgDateExclusion, dwDateExclusion
strComputer = "."
strProfileExclusionList = "|administrator|all users|default user|localservice|networkservice|public|ctx_smauser|ctx_cpuuser|ctx_cpsvcuser|ctx_streamingsvc|ctx_configmgr|"
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strLogFileName = ""
dateCurrentTime = now()
dwArgCount = 0
flgHelp = False
flgLogFile = False
flgCustomExclusions = False
flgWriteConsole = False
flgVerboseLog = False
flgAllowExecute = True
dwArgCount = objArgs.Count
For i = 0 to dwArgCount - 1
strCurrentArg = lcase(objArgs(i))
Select Case strCurrentArg
Case "-v", "-verbose", "/v", "/verbose"
flgVerboseLog = True
Case "-c", "-console", "/c", "/console"
flgWriteConsole = True
Case "-r", "-readonly", "-read", "/r", "/readonly", "/read"
flgAllowExecute = False
flgWriteConsole = True
Case "-l", "-log", "/l", "/log"
If i < (dwArgCount - 1) then
strNextArg = lcase(objArgs(i + 1))
If (left(strNextArg, 1) <> "/") and (left(strNextArg, 1) <> "-") then
flgLogFile = True
strLogFileName = strNextArg
i = i + 1
Else
wscript.echo "Warning: Log Switch Used but No Log Filename Specified."
End if
Else
wscript.echo "Warning: Log Switch Used but No Log Filename Specified."
End if
Case "-e", "-exclude", "/e", "/exclude"
If i < (dwArgCount - 1) then
strNextArg = lcase(objArgs(i + 1))
If (left(strNextArg, 1) <> "/") and (left(strNextArg, 1) <> "-") then
flgCustomExclusions = True
strCustomExclusions = replace(strNextArg, ",", "|", 1)
i = i + 1
Else
wscript.echo "Error: Exclude Switch Used but no Argument Specified."
flgHelp = True
End if
Else
wscript.echo "Error: Exclude Switch Used but no Argument Specified."
flgHelp = True
End if
Case "-i", "-include", "/i", "/include"
If i < (dwArgCount - 1) then
strNextArg = lcase(objArgs(i + 1))
If (left(strNextArg, 1) <> "/") and (left(strNextArg, 1) <> "-") then
flgCustomInclusions = True
strCustomInclusions = replace(strNextArg, ",", "|", 1)
i = i + 1
Else
wscript.echo "Error: Include Switch Used but no Argument Specified."
flgHelp = True
End if
Else
wscript.echo "Error: Include Switch Used but no Argument Specified."
flgHelp = True
End if
Case "-d", "-days", "-day", "/d", "/days", "/day"
If i < (dwArgCount - 1) then
strNextArg = lcase(objArgs(i + 1))
If (left(strNextArg, 1) <> "/") and (left(strNextArg, 1) <> "-") then
dwDateExclusion = cdbl(strNextArg)
i = i + 1
If (dwDateExclusion > 0) and (dwDateExclusion < 999999) then
flgDateExclusion = True
Else
flgHelp = True
wscript.echo "Error: Invalid Number of Days Specified."
End if
Else
wscript.echo "Error: Day Switch Used but no Argument Specified."
flgHelp = True
End if
Else
wscript.echo "Error: Day Switch Used but no Argument Specified."
flgHelp = True
End if
Case "-h", "-help", "/h", "/help", "-?", "/?"
flgHelp = True
Case Else
wscript.echo "Unrecognized option: " & objArgs(i)
flgHelp = True
End Select
next
If flgCustomExclusions and flgCustomInclusions then
wscript.echo "Error: Cannot Specify a Custom Exclusion List with a Custom Inclusion List."
flgHelp = True
End if
If flgHelp then
wscript.echo "Help"
wscript.echo ""
wscript.echo "DeleteProfiles.vbs - v1.9"
wscript.echo "-------------------------"
wscript.echo ""
wscript.echo "cscript.exe DeleteProfiles.vbs [/H] [/E | /I <profilename>] [/C] [/R]"
wscript.echo " [/D <days>] [/L <filename>] [/V]"
wscript.echo ""
wscript.echo "Command Line Options:"
wscript.echo " /C : Write Log to the Console"
wscript.echo " /D <days> : Delete Profiles Older than x Days"
wscript.echo " /E <profile> : Exclude Profiles from Deletion"
wscript.echo " : Wildcard * Supported. Use ',' or '|' as a Delimiter for"
wscript.echo " : Multiple Entries. No Spaces Between Entries."
wscript.echo " /I <profile> : Only Delete Included Profiles (Wildcard * Supported)"
wscript.echo " : Wildcard * Supported. Use ',' or '|' as a Delimiter for"
wscript.echo " : Multiple Entries. No Spaces Between Entries."
wscript.echo " /L <filename> : Create Log File"
wscript.echo " /H : Help (This Screen)"
wscript.echo " /R : Run Script in Read Only Mode (No System Changes)"
wscript.echo " /V : Verbose Logging"
wscript.echo ""
wscript.quit
End if
If flgLogFile then Set objLogFile = objFSO.CreateTextFile(strLogFileName)
WriteHeader
'**********************************************************************************
'* Enumerate a list of loaded Registry Hives. Delimited by the | character
strHiveExclusionList = "|"
strHiveOpenSkipped = "|"
strKeyPath = "SYSTEM\CurrentControlSet\Control\hivelist"
objReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath, arrValueNames, arrValueTypes
For i=0 To UBound(arrValueNames)
strHiveValue = trim(arrValueNames(i))
strHiveExclusionList = strHiveExclusionList & Right(strHiveValue, len(strHiveValue) - instrrev(strHiveValue, "\")) & "|"
Next
'**********************************************************************************
'* Enumerate a list of known profiles from the registry
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
'**********************************************************************************
'* Parse through the Profile list and Delete the Registry entries and Files associated to the Profile
'* Provided the profile is not listed in an Exclusion list
WriteLog "Checking Profile List"
WriteLog "---------------------"
If NOT flgAllowExecute then WriteLog "READ ONLY MODE. No changes made."
If flgDateExclusion then WriteLog "Purge Profiles Older than " & dwDateExclusion & " Days."
WriteLog ""
For Each subkey In arrSubKeys
strSubKey = ""
strGuid = ""
strUserName = ""
strProfileImagePath = ""
strSubKey = trim(subkey)
If (instr(SIDExclusionList, "|" & strSubKey & "|") = 0) and (strSubKey <> "") then
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & strSubKey
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,"Guid", strGuid
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,"ProfileImagePath", strProfileImagePath
strUserName = Right(strProfileImagePath, len(strProfileImagePath) - instrrev(strProfileImagePath, "\"))
WriteLog "Profile"
If flgVerboseLog then WriteLog " SID : " & strSubKey
If flgVerboseLog then WriteLog " GUID : " & strGuid
WriteLog " Profile Path: " & strProfileImagePath
WriteLog " UserName : " & strUserName
dwProfileExclusion = instr(strProfileExclusionList, "|" & trim(lcase(strUserName)) & "|")
dwSIDExclusion = instr(strHiveExclusionList, "|" & strSubKey & "|")
If flgCustomExclusions then
flgCustomExMatch = TestCase(lcase(strUserName), lcase(strCustomExclusions))
If flgCustomExMatch then
strProfileExclusionList = strProfileExclusionList & trim(lcase(strUserName)) & "|"
dwProfileExclusion = 1
End if
End if
If flgCustomInclusions then
flgCustomInMatch = TestCase(lcase(strUserName), lcase(strCustomInclusions))
If flgCustomInMatch = 0 then
strProfileExclusionList = strProfileExclusionList & trim(lcase(strUserName)) & "|"
dwProfileExclusion = 1
End if
End if
If flgDateExclusion then
flgExDateMatch = 0
If objFSO.FileExists(strProfileImagePath & "\NTUSER.DAT") then
Set objFile = objFSO.GetFile(strProfileImagePath & "\NTUSER.DAT")
flgExDateMatch = TestDateExclusion(objFile.DateLastModified, DateCurrentTime, dwDateExclusion)
Else
WriteLog " NTUSER.DAT Does not Exist"
If objFSO.FileExists(strProfileImagePath & "\NTUSER.MAN") then
WriteLog " NTUSER.MAN Found"
Set objFile = objFSO.GetFile(strProfileImagePath & "\NTUSER.MAN")
flgExDateMatch = TestDateExclusion(objFile.DateLastModified, DateCurrentTime, dwDateExclusion)
Else
WriteLog " NTUSER.MAN Does not Exist"
End if
End if
If flgExDateMatch then
strProfileExclusionList = strProfileExclusionList & trim(lcase(strUserName)) & "|"
dwProfileExclusion = 1
End if
End if
If (dwProfileExclusion = 0) and (dwSIDExclusion = 0) then
WriteLog " Profile OK to Delete"
If flgDateExclusion then WriteLog " Profile Matches Age Requirement"
If flgCustomInclusions and flgCustomInMatch then WriteLog " Profile Matches Inclusion List"
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\" & strSubKey
DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\" & strSubKey
DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\" & strSubKey
DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\" & strSubKey
DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
If strGuid <> "" then
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\PolicyGuid\" & strGuid
DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileGuid\" & strGuid
DeleteKey HKEY_LOCAL_MACHINE, strKeyPath
Else
WriteLog " Guid is Blank, Deleting Registry Keys based of Guid has been skipped."
End if
If objFSO.FolderExists(strProfileImagePath) then
WriteLog " Folder Exists - Deleting"
If flgAllowExecute then objFSO.DeleteFolder(strProfileImagePath), DeleteReadOnly
Else
WriteLog " Folder Does not Exist"
End if
Else
If dwProfileExclusion then
WriteLog " Profile not Deleted --- Username in Profile Exclusion List"
If flgCustomExclusions and flgCustomExMatch then _
WriteLog " Profile not Deleted --- Username Matched Custom Exclusion List"
If flgCustomInclusions and (flgCustomInMatch = 0) then _
WriteLog " Profile not Deleted --- Username Did not Match Custom Inclusion List"
If flgDateExclusion and flgExDateMatch then _
WriteLog " Profile not Deleted --- Profile is not Older than " & dwDateExclusion & " Days"
End if
If dwSIDExclusion then
WriteLog " Profile not Deleted --- User Hive is currently loaded"
strHiveOpenSkipped = strHiveOpenSkipped & trim(lcase(strUserName)) & "|"
End if
End if
End if
Next
'**********************************************************************************
'* Get Document and Settings Directory Location from the Registry
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,"ProfilesDirectory", strDocAndSettingsLocation
WriteLog ""
WriteLog "Documents and Settings Path: " & strDocAndSettingsLocation
WriteLog ""
WriteLog "Checking For Orphaned Profile Directories"
WriteLog "-----------------------------------------"
Set objFolder = objFSO.GetFolder(strDocAndSettingsLocation)
Set colSubfolders = objFolder.Subfolders
'**********************************************************************************
'* Parse through the directory a check For orphaned profile folders and Delete
For Each objSubfolder in colSubfolders
strUserName = lcase(Right(objSubfolder.Path, len(objSubfolder.Path) - instrrev(objSubfolder.Path, "\")))
dwProfileExclusion = instr(strProfileExclusionList, "|" & trim(lcase(strUserName)) & "|")
dwHiveOpenExclusion = instr(strHiveOpenSkipped, "|" & trim(lcase(strUserName)) & "|")
If (dwProfileExclusion = 0) and (dwHiveOpenExclusion = 0) then
WriteLog "Deleting Orphaned Profile Directory: " & objSubfolder.Path
If flgAllowExecute then objFSO.DeleteFolder(objSubfolder.Path), DeleteReadOnly
Else
If dwHiveOpenExclusion then
WriteLog "Hive Loaded -- Skippped Delete: " & objSubfolder.Path
End if
If dwProfileExclusion then
WriteLog "Profile Excluded -- Skippped Delete: " & objSubfolder.Path
End if
End if
Next
WriteFooter
If flgLogFile then objLogFile.Close
objReg = Nothing
objFSO = Nothing
objArgs = Nothing
'**********************************************************************************
'* Deletes All Subkeys and Values within a Given Registry Key
Sub DeleteKey(dwHiveType, strDeleteKeyPath)
Dim dwReturn, arrDeleteSubKeys, strDeleteSubKey
dwReturn = objReg.EnumKey(dwHiveType, strDeleteKeyPath, arrDeleteSubKeys)
If (dwReturn = 0) And IsArray(arrDeleteSubKeys) Then
For Each strDeleteSubKey In arrDeleteSubKeys
DeleteKey dwHiveType, strDeleteKeyPath & "\" & strDeleteSubKey
Next
End if
If flgAllowExecute then objReg.DeleteKey dwHiveType, strDeleteKeyPath
If flgVerboseLog then WriteLog " Deleting: " & strDeleteKeyPath
End Sub
'**********************************************************************************
'* Test a List of Wildcard Items Against a Value
Function TestCase(strTestCase, strWildCardTests)
TestCase = 0
dwAllItems = 0
dwSoftLeft = 0
dwSoftRight = 0
arrWildCards = split(strWildCardTests, "|")
For each strWildCard in arrWildCards
If strWildcard = "*" then
dwAllItems = 1
Else
If left(strWildcard, 1) = "*" then
dwSoftLeft = 1
strWildcard = right(strWildcard, len(strWildcard) - 1)
End if
If right(strWildcard, 1) = "*" then
dwSoftRight = 1
strWildcard = left(strWildcard, len(strWildcard) - 1)
End if
End if
If strWildcard = "" then dwAllItems = 1
If dwAllItems then
TestCase = 1
Else
dwLeftOk = 0
dwRightOk = 0
dwOffSet = instr(strTestCase, strWildcard)
If dwOffSet then
If (dwSoftLeft = 0) and (dwOffSet = 1) then dwLeftOk = 1
If dwSoftLeft then dwLeftOk = 1
End if
dwRightOffSet = len(strTestCase) - dwOffset - len(strWildcard) + 1
If dwRightOffSet = 0 then dwRightOk = 1
If dwRightOffset > 0 and dwSoftRight = 1 then dwRightOk = 1
If dwLeftOk and dwRightOk then TestCase = 1
End if
Next
End Function
'**********************************************************************************
'* Test Profile Date Against the Current Date. Then Compare Against out Value
Function TestDateExclusion(dateTestCase, dateTestCurrentTime, dwTestNumDays)
TestDateExclusion = 0
dwNumDays = DateDiff("d", dateTestCase, dateTestCurrentTime)
If dwNumDays <= dwTestNumDays then TestDateExclusion = 1
If flgVerboseLog then WriteLog " Profile Age : " & dwNumDays & " Days"
End Function
'**********************************************************************************
'* Log Header
Sub WriteHeader
WriteLog "---"
WriteLog "-- Profile Deletion Script Executed: " & dateCurrentTime
WriteLog "---"
WriteLog ""
End Sub
'**********************************************************************************
'* Log Footer
Sub WriteFooter
WriteLog ""
WriteLog "---"
WriteLog "-- Profile Deletion Script Completed."
WriteLog "---"
End Sub
'**********************************************************************************
'* Write String to Log File
Sub WriteLog(strString)
If flgLogFile then objLogFile.Writeline strString
If flgWriteConsole then wscript.echo strString
End Sub
|
|
|
|
|
You can do partial conversion using tools you will find on the internet.
Try converting the remaining on your own.
If you face issues, post them here.
|
|
|
|
|
Thanks, i was trying but wasn't works fine :/, and i tried with asp2aspx but only the premium version can converts vbscript to c# :/
|
|
|
|
|
What, exactly, do you want the code to do? I ask this because .NET provides a very rich and robust framework, and it's entirely possible that there are features that it has access to that make converting this pointless.
|
|
|
|
|
i want the same funcionality in this vsb script in c#, i was trying to convert it but i'm new on c# so is dificult for me
|
|
|
|
|
I'm not going to trawl through a large block of unformatted VBS. What are you trying to accomplish? Tell us what your end goal of this code is.
|
|
|
|
|
the goal is, close user profiles from remote servers, with some specific restrictions, all this profiles will be removed on HKEY like profilelist, profileguid, policyguid, etc.., i was trying on c# with registrykey and all of that code, but doesn't works, i have one week searching code on c#, and only code that has a success funcionality is this on vscript, this list all user profile list of the local machine and profiles on domain, etc.., so is the reason that i was trying to convert it :/
|
|
|
|
|
If all you need to do is run this script from .NET, then you can use Process.Start as detailed in this[^] post.
|
|
|
|
|
yes i'm doing that in this moment, but more specific, i would like to migrate the funcionality of the vbs script to c#, and have all in a only project, thanks for this time that u are dedicating for this post
|
|
|
|
|
i often feel people open my PC when i am not in office. so i want to track whenever my pc will be turn on.
when pc will be turn on then login screen comes. before entering login detail a mail should be trigger from my win service to me?
again when another user login with my credential details then another mail come to me. now the question is how can i track this activity from windows service. windows service has one event called start(). i like to know when start() is called ?
the moment someone start the pc ? or after login successfully or after loading desktop successfully ?
if i need to send mail after turn on my pc then what i need to do ?
also if i need to send mail after giving password then what i need to do ?
please guide me in detail. tell me which event i need to work with ? thanks
tbhattacharjee
|
|
|
|
|
You can use the built-in task scheduler[^] to run a program when the computer starts up, or when a particular user account logs in. It's not foolproof, since anyone with sysadmin access could disable the task, but they'd also be able to disable or uninstall your service.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
What Richard said, and change your password. No one should ever use your creds to login to any pc.
|
|
|
|
|
There are few ways to tackle this sort of thing.
Firstly, the Window Event Viewer will normally log when users log in without you doing anything. From command prompt type 'eventvwr' and navigate to security. In Task Category look for log on. You'll need admin rights for this. That may give you enough information that you don't need to create a Windows Service.
The start override is called when the Service starts, and that will usually be when the computer starts when set to automatic, of when explicitly started when set to manual.
If you do go ahead with the service, I would investigate programmatically getting events from the Event Log - there probably will be a hook where you can receive them but I don't know off the top of my head.
A simple approach might be to create a little console app that sends an email and make it run when you log in - like things like Skype do. It's a case of adding an entry in the registry in the 'run' section of windows.
Regards,
Rob Philpott.
|
|
|
|
|
Windows service is a reasonable approach to try with.
There are a number of online tutorials that will hhelp you get started.
Pick any one up and build your service.
|
|
|
|
|
I want To Draw number of electrons around the Atom < 3D > using XNA 4 but i failed
anyone Can help me ??
|
|
|
|
|
nada 1015 wrote: but i failed You also failed to explain what your code tries to do, and what errors or incorrect results you received.
Use the best guess
|
|
|
|
|
all i want to do is to draw a 3d model of electron around a 3d model of atom
i need somone help me to think how to write the Code
|
|
|
|
|
|
hi i`m trying on my project
i want to Expand or reduce window size click the button
like this
http://image.kilho.net/?pk=1216519[^]
i`m using Visual Studio 2012 and WPF project
how can i solve it?
|
|
|
|
|
You can try the Expander[^] or Accordion[^] controls for layout.
|
|
|
|
|
thanks for your help
do you know some exam?
if you know that it will be very thanksful
|
|
|
|
|
Good day Everyone,
The following is part of my code
start code
protected void Button1_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", "<script>loadAdditionalInfoDialog(info1)</script>",false);
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp2", "<script>loadAdditionalInfoDialog(info2)</script>",false);
}
end of code
The loadAdditionalInfoDialog() function will prompt a small window and let user to key in some info and then click on "OK" button to proceed to next step.
But, when I click on Button1, I can only see the secoond RegisterStartupScript, which is loadAdditionalInfoDialog(info2) works, it will prompt the small window, and I can key in some info and click on "OK" button to proceed to next step.
Because of this, I CAN NOT enter info for the first RegisterStartupScript, which is loadAdditionalInfoDialog(info1).
Would like to ask for solution which is, when I click on Button1, I can first enter info for loadAdditionalInfoDialog(info1) and then click on "OK" button, then continue enter info for loadAdditionalInfoDialog(info2).
Thousand of thanks.
|
|
|
|
|
Hi,
i m stuck in dll registration using c#.
i have to register some dlls in system32.
for that first in put all dlls in a seperate folder DLL.
then create a batch file who first copy all dll in system32 folder then register a XYZ.dll.
all goes well when we run code.
M using this line in batch file.
copy .\DLL\*.dll %windir%\system32\
regsvr32 %windir%\system32\XYZ.dll
but when we create setup and install project in client system, nothing happens.
even i m logged with adminsiatrator
if we run exe from client system by runas(my exe) it works.
i google it and find a solution
ProcessInfo.verb = "runas"
but same problem exists, nothing happens.
now the main problem is that how it works without administrator.
|
|
|
|
|
You need to basically run the exe as an administrator to make sure dlls are registered properly.
|
|
|
|
|
If you created a Setup (MSI) install for your app, when you add the .DLL's, you should have an option to register them. You don't need the batch file at all. Usually the tool your use to build the setup will detect this and enable registration for you automatically.
What are you using to build the setup??
|
|
|
|
|