MDRSESCO - Software for the Masses
The software described
herein, except where otherwise noted, was designed and implemented by MARK DANA
ROCKMAN Email:? usermark at mdrsesco dot biz.? Developed using C# and
C++ with .Net Framework and INTEROP aka P/Invoke. Some applications run as a
Windows Service.? Items are for sale.? Just send money.? Microsoft?s EULA applies to these items
except where it says Microsoft substitute MARK DANA ROCKMAN.? Software development project proposals are
entertained here.? Drop us a line.
Setting Default Executable Directories
This follows the lead
of Unix.? Each user account has an
associated set of environment variables,
which is an important part of a user profile.? One such variable is named PATH.? It is a list of directories that the
operating system will search to find the executable
file when the user command does
not specify the directory that contains the executable file.?
System
Properties/Advanced/Environment
Variables
can be launched from
Settings (formerly Control Panel).
Imagine Sending Email Programmatically
You could report software
problems by sending an email to yourself.?
Your software could be running anywhere that the Internet is accessible.
Microsoft provides this:
System.Net.Mail.SmtpClient(<email-server-address>)
This has been declared obsolete
because, in some cases, it does not work.?
Certain email servers demand that email transmissions be encrypted for security
reasons.? Some do not.? The
recommended replacement is an incredibly complex web application named SendMailProject.?
One supposes that web browsers are already equipped to adapt to email
server predilections.? Therefore,
SendMailProject harnesses that prowess by solving one problem and raising
another.? Anybody want their bosses to
pay thousands of dollars to send him/her to school to learn how to make a
website with RAZOR?? I urge Microsoft to
remove the legacy classification of SmtpClient.?
How to Unblock All the Files in a Directory
For security reasons, when you download a ZIP file from the Internet:? Windows may mark executable files within the
ZIP file such that you will be prevented from launching them.? The technical term for what Windows has done
to those files is ?block? or ?blocking.??
You can unblock an executable file (e.g. EXE or DLL) by examining the
Properties of the offensive file and ticking the Unblock checkbox.? If you want to save time, you can use
PowerShell to massively Unblock all blocked files.? A blocked executable file, when you try and
fail to execute it, will produce a certain, poorly documented HRESULT.? Or it will produce the ?Windows protected
your PC? notification as shown below.?
Simply launch PowerShell and execute the following command:
PS C:\> dir
C:\Downloads\*PowerShell* | Unblock-File
The above command unblocks all of the files in the C:\Downloads directory whose names include
"PowerShell". Do not run a command like this one until you have
verified that all files are safe.
That is the Microsoft documentation.?? In this case you want:
PS C:\> dir
C:\CSOFTWARE\MWE-PC-BACKUP-SERVICE\bin\Release | Unblock-File
Bootstrap a UEFI PC with OS on USB Boot Drive
For security reasons, there exist all kinds of
undocumented procedures and machine behaviors.?
In the present case an operating system resides on a bootable USB
drive.? Take care that the USB drive
contains a GUID Partition Table.? The
hard disk drives most often contain a bootable operating system, toward which
the firmware has a bias for loading.? The
firmware (UEFI) prefers to examine the hard disk drives and, if should it find something
to load into memory, it will ?restart? Windows.?
Present research has shown that the firmware will offer the option to
boot from the USB drive if and only if the USB drive is electronically
detectable by the firmware (i.e., it is in the jack) and the operating system
on the bootable USB drive will run on a UEFI computer. Rufus is an application
that will convert the ISO image of an operating system to a bootable USB
drive.? Be sure to use the latest version
of Rufus because it is familiar with the BIOS-to-UEFI industry transition.
Get a List of Running Windows Services
?
net start
Which produces something like
this:
These
Windows services are started:
?? Azure Attest Service
?? Background Intelligent Transfer
Service
?? Background Tasks Infrastructure
Service
?? Base Filtering Engine
?? Bluetooth Audio Gateway Service
?? Bluetooth Support Service
?? Bluetooth User Support Service
?? Bonjour Service
?? Capability Access Manager Service
?? Clipboard User Service
?? CNG Key Isolation
?? COM+ Event System
?? Connected Devices Platform
Service
?? Connected Devices Platform User
Service
?? Connected User Experiences and
Telemetry
?? Contact Data
?? Core Messaging
?? Creative Audio Service
?? Credential Manager
?? Cryptographic Services
?? CT Bus Broker
Administrator Account Disabled By Default
Microsoft has determined that, for
security reasons, the
Administrator account shall be disabled by default.? The end user cannot log into the local
Administrator account when the account has been disabled.
Regardless of the reason, even
though the Administrator account does not appear in the Settings app, Windows
11 offers at least three ways to enable it using Command Prompt, PowerShell, or
Computer Management.
?
To enable hidden Administrator
account on Windows 11, open Command Prompt (admin) and run the ?net user
?Administrator? /active:yes? command.
?
To enable the local admin account
with PowerShell, open the console (admin) and run the ?Get-LocalUser -Name
?Administrator? | Enable-LocalUser? command.
?
To enable the Administrator
account on Windows 11, open Computer Management and open the ?Administrator
Properties? page from the ?Users? branch, and clear the ?Account is disabled?
option.
Send An Email to Several Different Addresses
Some organizations need to send a single message to several clients.? This computer program is intended to be used
responsibly and never by Sales and Marketing.?
You create the message with NOTEPAD.?
You create a list of email addresses with NOTEPAD.? You launch MULTIEMAIL which removes duplicate
email addresses from your list.? Then it
sends your message to the remaining addresses.
Usage:? MULTIEMAIL
<common-email-body> <list-of-recipients> <server-addr>
<server-userid> <server-passwd> <sent-from-email-addr>
???? common-email-body: the name of
the txt file that contains your message.
???? list-of-recipients: the name of
the txt file that contains one email address per line.
???? server-addr: the domain name of
the target email server.
???? server-userid: the logon
username of the server client.
???? server-passwd: the logon
password that is associated with the username.
???? sent-from-email-addr: the email
address that can be replied to.
Microsoft 365
Microsoft 365 is a subscription-form of Microsoft Office.? It appears to be an attempt to get users of
Word, Excel, PowerPoint, and the rest, to pay continuously for the product
instead of just once.? This makes sense
from a corporate revenue picture point of view.?
Subscription purchasers benefit from the latest innovations which may,
or may not, be well-documented.? There is
typically no Product Key furnished to subscribers.? Rather, the purchase is associated with the
end user?s Microsoft Account.? A
purchased subscription may, or may not, appear in the list of product subscriptions
that is displayed in the various account-related web pages that are published
by Microsoft.? The end user must sign in
to the proper Microsoft account before he/she views subscriptions.? Only account-related subscriptions are
shown.? This reporter is subscribed to
Microsoft 365, yet the list of paid subscriptions is empty.? On the other end of the contract is Microsoft
whose representative found the purchase with his/her database tools.
Converting A Microsoft 365 Word Document to a Web Page
You can save your docx file as if it were a single web page.? The HTML and its related directory, the one
that contains exhibits (photographs), may or may not accurately reflect the
original Microsoft 365 Word file (the one with the docx filename
extension).? There are extraneous marks
displayed in the browser.? Certain
punctuation (see, for example, an enumeration with dots to the left of each
item) is corrupted.? The dots shown by
Word are question marks in the browser.?
The extra revenues of the subscription plan should fund work that will
make the HTML appear more like the Word document.
There follows the ?should be? screen shot and the ?corruption? screen
shot. ??Conversion from a Word document
to a web page is the process that needs work.
As of 27 July 2023 this problem has been, at least, partially
resolved.? Microsoft Windows Version 22H2
(OS Build 22621.2070).? Can?t find the
build identifier for Microsoft 365.
As of 03 August 2023 this problem has resurfaced.? Microsoft customer support gave support a
stab.? The artist believed that the
?filtered? HTML option was preferable to unfiltered.? Did not survive the acid test of deployment
to a web site.? The encounter uncovered a
report that Word was crashing after the 27 July 2023 patches went out to the
using public.? So, it seems, the patches
were removed pending further research and better patches.
As of 22 September 2023 this problem is once again fixed.? It's fun to watch fixes come and go.
As of 29 September 2023 this problem arises again.
?
And now from the web page:
Upgrade from Windows 10 to Windows 11
Assuming the PC is capable of running modern under UEFI, instead of legacy
under BIOS, and the PC sports TPM 2.0 (Trusted Computing Platform or Trusted Platform
Module) it should then be possible to upgrade to Windows 11 without losing any
files.? The native
operating system of any PC is the Basic I/O System (BIOS), now known as the
Unified Extensible Firmware Interface (UEFI).?
The native operating system is the software (actually: firmware) that
knows how to boot the computer.? UEFI
contains many security features.?
If you are running Windows 10, it is possible that the computer is running
BIOS.? You must run UEFI and TPM 2.0 to
run Windows 11.? You must convert the
Master Boot Record (MBR) format of the hard disk drive (HDD) to GUID Partition
Table (GPT) format.? This conversion is
made possible with Microsoft?s utility named mbr2gpt.
???? mbr2gpt /allowFullOS /convert
Just run the utility.? Then reboot
into the BIOS/UEFI pages.? Dell computers
allow you to see those pages by restarting the PC and pressing the F2 key
during bootstrap.? You then want to turn
off legacy everything and turn on UEFI.?
The PC should boot into Windows 10 under UEFI.? Secure Boot is a UEFI-associated
feature.? It should be turned on as soon
as this complex procedure allows.
With ample prayer, at this point the PC is running Windows 10 under UEFI
with TPM 2.0 and the HDD is in GPT format.?
The PC is ready to upgrade to Windows 11.? You can run setup.exe from Windows 11
installation media.? Microsoft has tried
to provide an upgrade path to Windows 11 that will cause little to no file
loss.? Good luck.
?
GPT
?
TPM 2.0
?
UEFI
?
Secure Boot
Suppose You Have A Static Web Page
A static web page may not show updates should browsers, worldwide, have
the page cached.? You can add HTML to the
web page that asks the browsers to forget about caching the pages. The
following is supposed to do the trick.?
<meta
http-equiv="Cache-Control" content="no-cache, no-store,
must-revalidate"/>
<meta
http-equiv="Pragma" content="no-cache"/>
<meta
http-equiv="Expires" content="0"/>
It turns
out that these HTML elements work on some browsers and not on others.? It is further noticed that the elements
interfere with each other in unpredictable ways.? It is recommended that only one of the above
elements be employed, preferably the one that operates effectively with the
browser that end users will use.? If you
can predict that then you should be able to make a fortune in the stock market.
Choose Your Mode
Windows 11 features additional appearance options for the desktop and for
any windows that open.? There is the
legacy ?light? mode and the new ?dark? mode.?
Naturally, dark mode is the default.?
If you want light mode, you can ?personalize? your display
settings.? Just right-click a blank space
on the desktop and click Personalize.?
Then click Colors.? Then click the
dropdown list next to Choose Your Mode.?
You can choose between Light, Dark, and Custom.
Virtual Machine Windows 11
To install Windows 11 under Hyper-V you must use Generation 2, set the
number of processors to 6, set memory size to 6000, turn on Secure Boot and
turn on Trusted Computing Platform.?
Bootstrap and Initialization may fail if not all these conditions are
met.? It is Microsoft policy to announce
that Bootstrap and Initialization failed without telling you why.? For the answer to why: you can run the PC
Health Check application.? https://aka.ms/GetPCHealthCheckApp is the Universal
Resource Locator (or is it Uniform Resource Locator?) to download and install
the PC Health Check application.? Of
course, if you cannot install Windows 11 under Hyper-V then you cannot run any
application under Windows 11 under Hyper-V.?
Catch-22.?
You can install Hyper-V on
Windows 11 versus some Windows Server release.?
It is an optional feature available in Settings (not to be confused with
Control Panel).? When the virtual
operating system launches you will find that it is biased toward a PXE
boot.? I found that I can press the ?any?
key by sending an alt+ctrl+delete and immediately press the ?any? key.
Preboot execution environment
(PXE), pronounced pixie, is a set of standards that enables a computer to load
an operating system (OS) over a network connection. PXE can be used to quickly
install an OS and is commonly used for both servers and clients. It may also be
called PXE boot, boot from network, network boot or local area network boot.? (Thanks to https://www.techtarget.com/searchnetworking/definition/Preboot-Execution-Environment).
Out-of-Box Experience (OOBE)
Microsoft Windows offers a very, very complicated bootstrap and
initialization design.? A single phase of
initialization is termed the ?Out of Box Experience."? This refers to initial installation of
Windows from installation media. You can buy installation media from
Microsoft.? You can alter the
installation media for your own environment if the documentation suits your
needs.
Hyper-V is an optional Microsoft Windows software feature.?? It is software that emulates the hardware on
which Windows runs.? You can install
Windows so that it runs under Hyper-V.? A
persistent problem arises wherein the Windows operating system (running under
Hyper-V) gets stuck in a loop.? It will
not proceed beyond a certain point.? The
obscure error codes that appear on the screen contain this sequence of
letters:? O-O-B-E.? This indicates the problem lies within the
OOBE phase of initialization.? Over the
years commentary has indicated the root cause is a deadly embrace (or deadlock)
between two or more initialization processes.?
Process A and Process B both need to acquire exclusive use of a certain
lock.? If A takes control of lock #1 and
then lock #2, and B takes control of lock #2 and then lock #1, it follows that
neither A nor B can proceed.? This is a
deadlock.?
Resolution of the deadlock can be had as follows.? When you see the error code that implicates
that OOBE has reached an impasse, you press the SHIFT key and the F10
simultaneously.? This launches a command
prompt where you can enter the following commands:
??????? net user administrator /active:yes
??????? cd oobe
??????? msoobe
Alternatively, the following commands may be used:
????????? cd %windir%
????????? cd System32
????????? cd Sysprep
????????? sysprep.exe /oobe /reboot
Research has shown that the first method works better than the second.
Nullable Reference Types
Microsoft printed material is cited in this section.
A reference type is a variable that ?references? an object.? C language and ?improved? object-oriented C++
language have pointers.? C# has reference
types.? Reference type variables are
pointers without the bad things that can happen with pointers.
Formerly, a reference type was always nullable.? The lack of runtime checks for NULL in
advance of dereferencing can produce runtime application program aborts.? These are annoying and embarrassing.? So, now the C# compiler has an elaborate new
feature that, more or less, detects when such checks are not present and
complains about it.
?Prior to C# 8.0, all reference types were nullable. Nullable reference
types refers to a group of features introduced in C# 8.0 that you can use to
minimize the likelihood that your code causes the runtime to throw
System.NullReferenceException. Nullable reference types includes three features
that help you avoid these exceptions, including the ability to explicitly mark
a reference type as nullable:?
?
Improved static flow analysis that determines if a variable may be null
before dereferencing it.
?
Attributes that annotate APIs so that the flow analysis determines
null-state.
?
Variable annotations that developers use to explicitly declare the
intended null-state for a variable.
?Starting in .NET 6, they're enabled by default for new projects. For
information about enabling these features by declaring a nullable annotation
context, see Nullable contexts.?
?The new features that protect
against throwing a System.NullReferenceException can be disruptive when turned on in an
existing codebase.?
Old code running in the new environment will probably produce many warning
messages.? Guidance is sparse on how to
cope with the situation.? There could be,
but there is not, a switch to throw that would disable every possible complaint.
??There is a way for coders to mark
reference variables that are guaranteed, more or less, not to be NULL during
dereferencing.? The null state analysis
needs hints from developers to understand the semantics of APIs.? An explicit test for NULL before
dereferencing should suppress a warning message.? A nullable reference type is
noted using the same syntax as nullable
value types: a ? is appended to the type of the variable. For
example:? string? name;? The
question mark indicates name is nullable.?
Visual Studio
won?t punish you for setting name to NULL.
Sometimes you
must override a warning when you know a variable isn't null, but the compiler
determines its null-state is maybe-null. You use
the null-forgiving operator !
following
a variable name to force the null-state to be not-null.
For example, if you know the name
variable isn't null
but the compiler issues a warning, you can write the following
code to override the compiler's analysis:??
name!.Length;
I found it convenient to add the following lines to each C# code
file.? Quick and easy.
#pragma warning disable CS8604
#pragma warning disable CS8618
#pragma warning disable CS8625
#pragma warning disable CS8600
#pragma warning disable CS8602
#pragma warning disable CS8601
#pragma warning disable CS8603
#pragma warning disable CS8629
#pragma warning disable CS0266
Discretionary Access Control Lists (DACLs) and Ownership
Windows has a complex mechanism that is intended to restrict access to
various operating system objects; especially files and directories.? These objects have owners and DACLs.? An end user who desires access to an object
must be granted permission to have access.?
Some combination of ownership and DACL act to grant or deny access.? Sometimes access is denied for specious
reasons.? There is a mechanism by which
the end user can prod the system to determine whether an object possesses all
necessary permission for the act that the end user intends.? A file (or folder) can be read by users A and
B and written by user C and deleted by user D.?
The users are termed ?principals? in the vernacular.?
Whenever something happens in a system, a principal (which could be a
process or thread acting on behalf of a user or service) acts upon objects.? Users who are not owners may be denied the
ability to view the DACLs.? An end user
with elevated privileges (i.e., is running under the Administrator account) has
permission to take ownership of practically any file.? A complicating factor is inheritance.? The files/directories are organized in a tree
structure.? The files/directories are
termed ?nodes.?? The topmost node is the
<drive-letter>.? It is the root
because the tree is upside down with respect to natural trees in a forest.? Nodes below the root can inherit permissions
from the root or establish themselves as the inheritance granting authority for
nodes below themselves.? The original
design permitted multiple inheritance.?
But that was discovered to present intractable problems.? So, there is no multiple inheritance.? Windows sometimes issues silly denial
messages.? My favorite is:? ?You must have permission from
Everyone??? How all of this really works
remains an undocumented mystery.? Well,
there exist documents.? Neutrino
chirality is easier to understand than this.?
Refer to this document:? https://docs.microsoft.com/en-us/archive/msdn-magazine/2008/november/access-control-understanding-windows-file-and-registry-permissions?
Syntax:? takeown /F
<name-of-object>
For
Security Reasons You Want to
Know What Files Have Been Accessed and When
Now available is a Windows Service that records file accesses.
If You Are Backing Up Files
If your application?s purpose is to backup files, then you probably want
to ask Windows to permit you to have access to various files that you
ordinarily wouldn?t have access to. This is all part of the extremely complex
and not very well documented security features of Windows.? Here is how to set or clear the privilege:
The ChangeBackupPrivilege takes an argument of 0 or 1.? When the argument is 0 then the backup
privilege is turned off.? When the
argument is 1 then the backup privilege is turned on.? Here is the Win32 C++ method that is called:
Volume Shadow Copy Service (VSS)
Microsoft defines a ?shadow copy? to be the frozen image of a mass storage
device in whole or in part.? The Volume
Shadow Copy Service is a software component of Windows that provides an
application programmer interface (API) that is of interest to programmers who
are creating software that is capable of creating disk images.? The API conforms to the Component Object
Model (COM).? As such, the ?disk image
creating software? also conforms to COM.?
The software shall be written in C++ or, perhaps, Visual Basic.? Development of Microsoft VSS more or less ended
long ago.
HRESULT
= 0x80d05011
One of millions of desktop computers running Windows 10 is suffering a
Windows Update malfunction.? The end user
is notified that updates are available.?
The end user requests the updates.?
One of several updates downloads 5% and announces a malfunction.? This is quite reliable.
There are several documented steps an end user can pursue to resolve such
issues.? There is even a Windows Update
Troubleshooter that, one assumes, would sort out all kinds of malfunctions.? They?ve all been tried and have failed.? Microsoft?s Feedback Hub has been
informed.? We await a satisfactory
response.
?
So
You Want To Choose the Command Prompt?s Current Working Directory
I searched for hours using Microsoft?s documentation platform (the
point-and-click desktop, outdated textbooks for paid classes, AND Google).? (I found tons of people who want to delete
C:\Windows\System32, since that appears in front of the common user as the
default current working directory (CWD) of the legacy Windows shell.)? But I could not remember how I did it a while
back.? And I could not find how to do
it.? The solution:? Create a shortcut on the desktop that
launches the legacy shell.? Then, access
the Properties of the shortcut and put your chosen CWD in the Start In box.? It is allegedly possible to make a Registry
change to accomplish what you want.? But
design of the Registry is subject to change without notice.
?
How
to Configure Windows to Bypass the Logon Screen
Microsoft offers, as part of Windows, a utility application called
NETPLWIZ.? The purpose of NETPLWIZ, as
far as I can tell, is to allow you to configure Windows so that you do not have
to enter a password when you turn on the computer.? The utility formerly worked properly.? That is to say, there was a checkbox that you
could tick to configure one of the user accounts as the account that you
automatically get logged into when you turn on the computer.? Microsoft improved NETPLWIZ so the checkbox
no longer appears.? Presumably this
design decision was made for the ever-popular ?security reasons.?? Actually, there is a way to configure Windows
so that NETPLWIZ presents the checkbox.?
Just go into the Registry editor and set the following item to zero.? By default, it is set to 2.? Reboot the computer, launch NETPLWIZ, and,
voil?, there is the checkbox.? The advent
of ?Windows Hello? allows you to configure a PIN in place of a password.? You can also, with the right hardware, have
the computer recognize your face or some device you plug in.? As of 2022 NETPLWIZ and Windows do not play
nice unless you stay away from the advanced features.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\PasswordLess\Device\DevicePasswordLessBuildVersion
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\PasswordLess\Device]
"DevicePasswordLessBuildVersion"=dword:00000000
After
Logging Off or a Reboot
?How to Change Group Policy
to
Allow Logging Into A Different Account
Launch gpedit.msc which is the Group Policy Editor.
?
Go to Computer Configuration
?
Go to Windows Settings
?
Go to Security Settings
?
Go to Local Policies
?
Go to Security Options
?
Go to Interactive Login: Don?t display last signed in.
You want to Enable Interactive Logic:?
Don?t display last signed in.
Making
and Recovering a Disk Image
In the event of a catastrophic computer failure, a disk image is the best
aid to remediation.? A disk image
contains all the data on a disk without regard to the file system.? It includes data that is not in the file
system such as the Master Boot Record and/or its equivalent.? If you have software installed, for which you
do not possess installation media, a disk image will restore that software.? If you have laboriously configured your
operating system, and you do not want to spend more hours recreating that
environment, a disk image will save you time and effort.?
In practice, the available options for creating a disk image have solved
the creation part adequately.? When
restoration is attempted, the solutions often present obstructions.? For example, one commercial solution has a
habit of blocking access to a disk image, during restoration, that happens to
be in a shared directory, or maybe on the Internet.? The solution does not distinguish between the
two. For security reasons, they assume it must be the Internet.? More to its liking is that you plug in a USB
drive, preferably a capacious one.? The commercial
solution, for restoration, requires ancillary software that comes in two
flavors:? one for Windows 10 and one for
Windows 7.? Attempting recovery with the
wrong ancillary software will appear to complete successfully, but the contents
of the hard drive will be improperly formatted.?
The end user interface is confusing and the learning curve is steep.? The vendor has added malware protection to
help sales.? Malware protection is turned
on by default.? It can be turned off, but
only partially.? There is plenty of
opportunity for the malware detector to falsely decide the software that you
run is malware.? This causes end users to
panic and may disrupt production.? During
backup, if you are running the latest Microsoft operating system, then the
commercial solution behaves flawlessly.? The
open-source solution, but not the commercial solution, requires that the end
user takes the production application out of service during the period in which
the image is created. The open-source solution runs under Linux whereas the
commercial solution runs under Windows (applications in production) during
backup and under Windows Pre-boot Environment (proper version) during
restoration.? The open-source solution
has a horrible end-user interface with many pages and hard-to-understand
wording.? During recovery, figuring out
which device you want to backup to or restore from is difficult, because Linux
has no concept of drive letters.? You
should format the output media with a label that appears in the interface.? The label acts as your clue as to which
device is the backup device.? Open-source
is no-cost and there is no recourse if it fails. ?(Not that there is recourse should any
commercial solution fail.)? It is
operating system agnostic.? It properly
restores a Windows 7 hard disk. It probably works with any operating system.? Even Linux.
How Create a
Disk Image with CloneZilla
WARNING:? You must be very careful when choosing
a device to read from and to write to with CloneZilla.? The software has no way of knowing which hard
disk drive has which drive letter.
1. Gather these USB
drives:
a. CloneZilla boot
drive.
b. Formatted, empty
USB drive to receive the image.? Label
this drive CreatedByLinux.
2. Unplug all USB
devices from the PC.
3. Insert the
CloneZilla boot drive.
4. Reboot the PC
whose image is to be created.
5. Communicate with
BIOS or UEFI as required to boot from CloneZilla boot drive.
6. Press ENTER on
each screen until you arrive at the Start CloneZilla screen.
7. Choose Start
CloneZilla mode.? Do not choose Enter
Shell mode.
8. See CloneZilla
Open Source Clone System screen.
The
CreatedByLinux label is created by you when you format the output drive.? The label will appear, truncated, within a
message issued by CloneZilla during a save or restore operation.
*CloneZilla is free (GPL) software, and comes with ABSOLUTELY NO
WARRANTY*
///Hint!? From now on, if
multiple choices are available, you have to press space key to mark your
selection.? An asterisk (*) will be shown
when the selection is done///
Two modes are available, you can
1. clone/restore
a disk or partition using an image
2. disk
to disk or partition to partition clone/restore
Select mode:
1. device-image
work with disks or partitions using images
2. device-device
work directly from a disk or partition to a disk or partition
OK or Cancel
You
want device-image mode.? Press OK.
Mount CloneZilla image directory
Before cloning, you have to assign where the CloneZilla image will
be saved to or read from.
We will mount that device or remote resources as /home/partimag.?
The CloneZilla image will be saved to or read from /home/partimag.
Select mode:
You
want local_dev Use local device (E.g.: hard drive, USB drive)
(This
is more than a little confusing.? The
software indicates it wants you to specify the output device.)
OK or Cancel
You
want local_dev.? Press OK.
Below
the CloneZilla image directory screen appears several lines, as follows:
ocsroot device is local_dev
Preparing the mount point /home/partimag?
If you want to use USB device as a CloneZilla image repository,
please
?
Insert USB device into this machine *now*
?
Wait for about 5 secs
?
Press Enter key
?
So that the OS can detect the USB device and later we can mount it
as /home/partimag.
Press Enter to continue.
The
software wants you plug in the USB drive that you previous formatted.? Linux will detect that you have done so if
you wait about five seconds.? Then press
Enter.? Notice that you have provided a
place for the image to go.
After
you press Enter several lines will appear that enumerate various partitions on
the various hard disk drives.? In Linux
these are named /dev/sda<n> where <n> varies and are named
/dev/sdc<n> where <n> varies.
CloneZilla - Opensource Clone System (OCS) | Mode:
Now we need to mount a device as /home/partimag (CloneZilla image(s)
repository) so that we can read or save the image in /home/partimag.? ///NOTE/// You should NOT mount the partition
you want to backup as /home/partimag
The partition name is the device name in GNU/Linux.? The first partition in the first disk is? hda1? or?
sda1?, the 2nd partition in the first disk is? hda2? or?
sda2?, the first partition in the second disk is <hdb1> or
<sdb1>.?? If the system you want to
save is MS windows, normally C: is hda1 (for PATA) or sda1 (for PATA, SATA, or
SCSI), and D: could be hda2 (or sda2), hda5 (or sda5).
This is perfectly clear in an alternative universe.? You are specifying the output device.? Look at the various choices and select the
one that contains the name of the manufacturer of the output device.? For example:?
Sandisk.? To help things along,
you may see CreatedByLinux, truncated, in one of the choices.? Pick that one.
Press
OK.
CloneZilla - Opensource Clone System (OCS)
Which directory is for the CloneZilla image (only the first level of
directories are shown, and the CloneZilla image (i.e. directory) itself will be
excluded.? If there is a space in the
directory name, it will _NOT_ be shown.
Various
top-level directory names are shown.? I
recommend that you choose the root directory (i.e. the slash).? It is shown as
Top_directory_in_the_local_device.
Many
lines will appear followed by Press <Enter> to continue.
CloneZilla - Opensource Clone System (OCS)
Choose the mode to run the following wizard about advanced
parameters:
I
recommend that you choose Beginner mode.?
Do not choose Expert mode.? Press
OK.
CloneZilla - Opensource Clone System (OCS):? Select mode
This software will overwrite the data on your hard drive when
restoring!? It is recommended to backup
important files before restoring!***
///Hint! From now on, if multiple choices are available, you have to
press space key to mark your selection.? An
asterisk (*) will be shown when the selection is done///
Choose
savedisk?
Save_local_disk_as_an_image.
Do
not choose saveparts
Save_local_partitions_as_an_image.
Press
OK.
CloneZilla - Opensource Clone System (OCS):? savedisk
Input a name for the saved image to use
2022-02-23-05- img
Press OK.
This
is the output file.
CloneZilla - Opensource Clone System (OCS):? savedisk
Choose local disk as source.
This disk name is the device name in GNU/Linux.
The first disk in the system is <had> or <sda>, the 2nd
disk is <hdb> or <sdb>? ?Press
space key to mark your selection.? An
asterisk will be shown when the selection is one.
[*] sda 250GB_ST250LT03-9YG14-ST250LT003-9YG14C_W0456VGT
This
is the input device.
Press
OK.
Choose if you want to check and repair the file system before saving
it.?
This option is only for certain file systems which are well
supported by fsck on GNU/Linux, like ext/3/4, reiserfs, xfs, jfs, vfat.? Not for NTFS, HFS*.
Choose
Skip checking/repairing source file system.
This
is because NTFS is the most popular file system for Windows 7.?
Press
OK.
CloneZilla advanced extra parameters | Mode: savedisk
After the image is saved, do you want to check if the image is
restorable?? ///NOTE/// This action will
only check the image is restorable, and it will not write any data to the
harddrive.
Choose
Yes, check the saved image
Press
OK.
CloneZilla advanced extra parameters | Mode: savedisk
Do you want to encrypt the image?
If yes, eCryptfs program will be used to encrypt the image.? It uses industry-standard cryptographic
ciphers, key generation, and passphrase protection mechanisms.? Without your salt/passphrase or private key,
nobody will be able to retrieve your data.?
//NOTE// You have to remember the passphrase, otherwise the image will
_NOT_ be usable in the future.
Choose
Not to encrypt the image
Be
sure to put the output USB drive in the vault for safekeeping.? Press OK.
Are you sure you want to continue (y/n)
Press
y.? Press Enter.
If
your computer has multiple hard disk drives, it will probably be necessary to
repeat the entire process more than once.
This
was a long, long trip.? But finally, the
disk image starts being written to the output drive.
At
the end it becomes obvious that the work is done. You should reboot the
computer after removing both USB drives.
Introduction to
MWE-PC-BACKUP-SERVICE
The software is what Microsoft calls a SERVICE.?? It is a process that runs constantly.? It is invisible.?? Except between the hours 0000 and 0600, the
SERVICE is very gentle and cooperative with the work that end users want to
accomplish with Windows and with its installed applications.? If you turn off your computer at close of
business, then the desired copies will not be made.
Between
midnight and 6 a.m., the SERVICE rapidly copies (it does not MOVE and it does
not DELETE and it does not MODIFY) files that appear on the host computer.? It does create copies of most files on the
host computer by making COPIES on the FILE SERVER for recovery in the event of
a hardware failure.? The copies are not
published.? The copies are
encrypted.? The files that are not copied
are third-party application programs and those files that directly support the
Windows operating system.? If you want
your application programs reinstalled, then you are referred to late model
installation media which should be carefully maintained by the business office.? Copies of the installation media for the
Windows operating system are available for download from The Microsoft Store.
When
recovery is required, the tool called GROWLER-X is simple and easy to use.
The
system administrator must monitor the storage space that receives the backed-up
files.? Typically, one FULL backup is
automatically made every month at the beginning of the month.? INCREMENTAL backups are made during the
remainder of the month. Eventually the storage space will become
exhausted.? To avoid that from happening:
the system administrator is required to manually delete older backup
files.?
When
the backup process is in progress there is always the possibility that the
necessary network connection will be broken.?
A power outage or a computer reboot is all that it takes.? Then recovery becomes necessary.?? Recovery is an arduous process.? First, the location of the most recently
successful file backup must be determined.?
Then the backup file shall be recovered and the backup process
resumed.?
How to Use
MWE-PC-BACKUP-SERVICE
1.
The
purpose of the MWE-PC-BACKUP-SERVICE is to maintain current backups of files on
various computers.? It is configurable on
a computer-by-computer basis.? Some or
all of the directories on each computer can be backed up to a central
computer.? The central computer
communicates with the client computers via the SMB protocol.? Design and implementation of this project
commenced in 2020 and ended in 2023.?
Copyright Mark Dana Rockman 2023.
2.
The Server
Message Block (SMB) Protocol is a network file sharing protocol, and as
implemented in Microsoft Windows is known as Microsoft SMB Protocol. The set of
message packets that defines a particular version of the protocol is called a
dialect. The Common Internet File System (CIFS) Protocol is a dialect of SMB.
3.
The central
computer (also known as The Server) exposes a single shared directory that is
visible to all client computers.? It is
expected that the single shared directory shall be located on a dedicated
RAID-1 hard disk drive pair of sufficient capacity to backup several computers
over a period time.? Someone will be
required to monitor unallocated space and remove redundant backups as required.
4.
Each month a
FULL backup is performed one time.? After
the FULL backup is performed INCREMENTAL backups are performed.? A FULL backup contains copies of most of the
files on the computer.? An INCREMENTAL
backup contains only those files that have been added or changed since the most
recent FULL backup (to include succeeding INCREMENTAL backups).? A file needing to be backed up is indicated
by the ARCHIVE bit being set in the file?s metadata. A successful backup clears
the ARCHIVE bit.
5.
A Windows
service runs in the background.? It is
normally invisible to the computer?s end user.?
All types of backup run during the period 0000-0600.? Outside that period, backups do not run to
ensure that end user activity can proceed without interference from the backup
service.? This is a matter of resource
utilization:? CPU time, I/O channel time,
application responsiveness.
6.
Installation of
MWE-PC-BACKUP-SERVICE is simple.? An
installation directory is provided to the system administrator. On the server,
on the capacious drive that hosts the backups, the system administrator shall
create a shared directory named
<driveletter>:\HHHHHH\MyBackups
The system
administrator launches an elevated command prompt.? Then the INSTALL.CMD script is run in the
shell.? A graphical user interface
appears as shown below.
7.
Under
Drive Letter to be backed up the system administrator selects a drive
letter from A to Z.? Usually drive letter
C is selected.? If additional drives are
to be backed up, they are listed under Additional Drive Letters without
commas, spaces, or other punctuation.? For
example, if drives C and F and H are to be backed up, the system administrator
highlights C under Drive Letter to be backed up and puts the string FH
in the text box under Additional Drive Letters.
8.
In
IP Address of Computer Hosting Backup Files, the system administrator
provides the IP address of the server.? Under
User Name the system administrator puts the account that has sufficient
privileges to support SMB.? Under Password
the system administrator puts the password that protects the account.? Under Backup Type the system
administrator selects the type of backup to be performed immediately.? Usually, a FULL backup is chosen after
MWE-PC-BACKUP-SERVICE is first installed.
9.
Once
a month a FULL backup is automatically performed.? At other times an INCREMENTAL backup is
performed.
10.
The
software depends on the computer being powered up between 0000-0600 as that is
when the backups are performed.? The end
user may tick the box labeled 24/7 Operation to override the 0000-0600
convention.? The computer user may
experience difficulty getting work done when this option is selected.
11.
Should
a backup be in progress, and the computer is restarted or powered off, then a
recovery process must be performed before additional backups can be created.? There is a maximum of one backup per calendar
day.? The recovery process locates the
point in the backup file where backing up ceased.? Then it eliminates any partial file and
stages extension at the point of interruption.?
12.
The
system administrator can monitor progress by inspecting the BACKUP-SERVICE
application log.? Go to Computer
Management/Windows Log/Event Viewer/Application.? Click on Filter Current Log.? Find BACKUP-SERVICE in the Event Sources
dropdown list.? Highlight it. Click OK.? The configuration directory is named C:\CONFIGFILE-U4syKL3SZaGc25gxe8n9.? A copy of the application log can be found in
the file MESSAGES.TXT in the aforementioned directory.
13.
The
system administrator can remove the service from any computer, on which it is
installed, by following the procedure outlined above for installation.? Run the UNINSTALL.CMD script rather than the
INSTALL.CMD script.? It may be desirable
to remove backup files from the backup directory after the UNINSTALL.CMD script
is successfully completed.
14.
Periodic
maintenance of the backup directory should be done to ensure there is
backup capacity at all times.
15.
Restoration
of files from the backup directory requires the system administrator to execute
the GROWLER-X.EXE utility program.? The
system administrator provides the name of the backup directory and the name of
a directory to receive the recovered files.?
Also required is the Computer Name.?
The aforementioned utility program must merge INCREMENTAL with FULL
backups to recover the latest revision of every file.? It is important that any computer that is
running the service maintains an accurate clock.? The KEEPCLOCKUPDATED service is available to
ensure the computer remains synchronized with Coordinated Universal Time.? Windows enforces a limit of about 250
characters in filenames.? Restoration of
a file can be disrupted when this limit is exceeded.
16.
There
is no backup provided for any files in these directories:? %windir%, Program Files, Program Files(x86).? Also, System and Hidden files are neither
backed up nor restored.? Access Control
Lists and metadata (except for timestamps) are not saved nor are they restored.
Automated
Backup Service
Installation
Instructions
Find
<drive-letter>:\Release
Plug a USB drive into
<source-PC>.
Copy the directory
<drive-letter>:\Release (and its contents) to a USB drive directory
<drive-letter>:\Release
Plug the USB drive into
the <destination-PC>.
Copy the
<drive-letter>:\Release directory to some out-of-way place on the PC.
Remove the USB device.
Then run the following
script in an elevated command prompt:
<drive-letter>:
cd \Release
call .\INSTALL.CMD
You tell your computer operators to back up their computers on a
regular basis.? They have higher
priorities.? So, it doesn?t get
done.? You even provide a capacious file
server where their important files can be saved.? It goes unused.? PC-BACKUP-SERVICE is the solution.? Each computer that
requires backing up runs this service.?
The first time it runs, every file, except system and hidden files (and
those files that are inaccessible), is saved to the file server.? On subsequent days, new files and changed
files are saved to the file server.? If,
as was the case in my work environment, a hard disk drive takes a powder and
cannot be recovered, you can recover the files to a brand-new disk drive using
Growler-X.? Each time the month changes
(e.g., from January to February) a FULL backup is automatically done.
The service is simple to install.?
Launch a command line prompt as Administrator.? Make the current working directory the
Release directory of the Visual Studio solution.? Launch the Install.cmd script. The first task
is to configure the service.? The
PC-CONFIGURATOR is an application that allows you to specify which drives on
this computer to back up.? The first time
you run the configurator, you want to tick the FULL radio button.? You specify logon credentials for the
server.? Press CREATE.? A configuration file appears in C:\ CONFIGFILE-U4syKL3SZaGc25gxe8n9.
Further on in the Install script the service is installed and started.? Backing up usually commences
immediately.? Remember to keep your PC
powered on after installation and during the period in which the FULL backup is
completed.? You can monitor progress by
examining the file C:\ CONFIGFILE-U4syKL3SZaGc25gxe8n9\Configfile.txt.? When the second line changes from FULL to
INCREMENTAL, or vice versa, you are free to turn your PC off. If you turn it
off during the FULL backup, when the PC is turned back on, any defect in the
backup will be removed.? Then FULL backup
resumes from the beginning once the date changesdowndaddddddd.
A defect refers to damage done to the backup file when either the
client or the server reboots during a backup.?
There will usually be a partial file backup at the tail end of the
backup file.? Also, there is a hard EOF
at the end of the file.? A completed
backup file has a soft end-of-file marker.?
The remedy for a defective backup is to find the partial backup and
remove it. This is time consuming but necessary to avoid a corruption event
during file restoration.? Defect removal
is automatic for backup files created today, yesterday, and a few days
before.? There is a list of files for
which it has been determined that there is no defect.
For reasons that would become apparent to users of an early version
of this software, the hard work of creating backups occurs between the hours of
midnight to 0600.? It is assumed that the
user leaves the PC powered on at all times and that the user is not trying to
do productive work in the interval 0000-0600.?
Backing up and defect removal occurs at other times of the day but in
such a way that productive use of the PC is not impacted.
A cyclic redundancy check is applied to each backed up file.? The CRC more or less guarantees that restored
files differ not a single bit from what was backed up.? The file length is also checked. The three
metadata dates (creation time, modify time, access time) are restored by
GROWLER-X. Odd attributes such as READONLY are not restored.? Occasionally Windows will obstruct such
restoration.? But file text is not
impacted.? Applications in C:\Program
Files and its brother are not saved or restored.? The operating system in C:\Windows is not
saved or restored.? Nor the paging file.
Once the FULL backup has been created, except for monthly FULL
backups, only INCREMENTAL backups are created.?
Here is a File Explorer display that shows the result of backing up:
The System Administrator is required to provide ample storage
capacity on the file server.? She will
have to create a shared directory called HHHHHH that contains a directory
called MyBackups.? That?s where the
backup files go.
You can recover files from the MyBackup directory by using the
Growler-X tool.? Just launch Growler-X,
answer the questions, and wait.? Since
storage capacity is not infinite, it is recommended that a system administrator
periodically consolidates the backup files to remove redundant and superseded
data.? Growler-X is meticulous about
preserving timestamp metadata.? File
attributes are not preserved.? These
include attributes such as READONLY and access control lists.
Development of this tool took eight months.? When in the midst of backing up, it may occur
that the file server goes offline.?
Recovery is complicated.? There is
the expected task of reconnecting to the file server.? This entails the use of a pair of Win32
methods that don?t appear in the .NET Framework.? The first method tries to delete the useless
drive letter that (formerly) mapped to the shared directory on the file server
where the backups are stored.? The method
often reports a spurious and meaningless error.?
The second method creates the?
network drive? which maps a drive letter to the aforementioned shared
directory.? That call is successful once
the file server is back online, which generally follows a reboot.? And then there is the remnant and incomplete
backup file.? The backup file contains
images of many files from the PC being backed up.? Each image has a prefix and a postfix.? The prefix names the file and contains these
metadata:? creation timestamp, access
timestamp, modify timestamp, and byte length.?
The postfix contains a cyclic redundancy check (CRC).? The CRC is used to guarantee the validity of
the image.? To avoid two passes of each
backed up file, the postfix follows the coded file image.? An incomplete image does not contain a
postfix.? Backups are created all the
time but especially in the period 0000-0600. Once a backup is completed, the
service enters the idle loop awaiting a date change.? Every backup filename contains a date.? To prevent overwriting today?s backup during
recovery from a file server outage, the incomplete backup defect is removed and
further work is delayed until midnight. At midnight the date changes and, thus,
the filename changes.
Windows does not do timesharing.?
One application can easily monopolize the PC to the detriment of other
processes.? An I/O bound process is
especially prone to getting all the CPU time that it wants.? Thus, an I/O completion is followed by a tiny
bit of CPU time to get the next read or write started immediately. The service
inserts timed waits at appropriate points to give other processes a chance to
progress.? This is especially done
outside the period 0000-0600.?
?
MWE-PC-BACKUP-SERVICE
Operating Instructions
1. Assuming the
software has been previously installed, the first step is to halt it.? The Release directory, which has been
provided to you, contains a script XSTOP.CMD.?
You should create the directory C:\MWE-PC-BACKUP-SERVICE and populate
it.? You should launch a Command Line
Prompt in privileged mode.? Now you can
make sure MWE-PC-BACKUP-SERVICE is not running by entering CD
C:\MWE-PC-BACKUP-SERVICE and then typing XSTOP.CMD.
2. The next step is
to remove a prior release of MWE-PC-BACKUP-SERVICE. Launch the Command Line
Prompt in privileged mode.? Make the
current working directory C:\MWE-PC-BACKUP-SERVICE.? Then type UNINSTALL.CMD. There may be some
pauses in the script.? When they occur
simply press Enter to continue the script.
3. For insurance
that every accessible file is backed up, you should set the Archive bit in the
metadata of every file that is not System or Hidden.? You do this by launching the Command Line
Prompt in privileged mode.? Then type
Attributes C:\ SET.? You must do this for
every drive that you intend to backup through automation.
4. A previous
configuration file may exist.? You may
(your option) delete the file
C:\CONFIGFILE-U4syKL3SZaGc25gxe8n9\CONFIGFILE.TXT.
5. Next, install
the software.? Launch the Command Line
Prompt in privileged mode and set the current working directory as before.? Then launch the script INSTALL.CMD.? The configuration tool appears.? Fill it out and press CREATE.? The SAMPLE button will help you fill it out.? Your task is to enter the correct
password.? If a previous configuration
file exists (you did not delete it, for example) the form will be populated
using data therein contained.
6. There will be
several pauses in the script.? Just press
Enter as necessary.?
The
software is now installed and started.?
It shall run continuously.? Its
first task is the massive creation of a complete backup copy of every file on
the drive that you specified.? (Some
files are never backed up because they are installed by Microsoft or by 3rd
party software developers when software is installed.) On subsequent days only
those files that are brand new or changed will be backed up.? Backing up consumes significant PC resources.? To avoid you having to get work done while
competing with the backup service, the backup service runs full tilt between
midnight and six a.m.? (0000-0600). At
other times it waits for midnight to roll around or runs really slow.? Because an incomplete backup cannot be
properly reconstructed by GROWLER-X, the service detects an incomplete backup
when it starts and removes it.? GROWLER-X
also removes an incomplete backup when it finds one.? The backup service requires your PC to be
turned on and the file server to be turned on between midnight and six a.m.
Warning
and Caution:? Due to Fear in Various
Accounting Departments
MWE-PC-BACKUP-SERVICE
does not backup, nor does it restore installed software, to include Windows and
Microsoft Office and Microsoft 365.? If
you buy software from a 3rd party, you must retain installation
media (IM).? IM comes in handy after you
restore the files using GROWLER-X.EXE.??
You can rely on MWE-PC-BACKUP-SERVICE to save and restore photographs,
documents, spreadsheets, PowerPoint presentations, music, videos, desktop icons
(but not their layout on the desktop).?
The Registry is a complete mystery to MWE-PC-BACKUP-SERVICE.? It is neither backed up nor is it
restored.? System and Hidden files are
invisible to MWE-PC-BACKUP-SERVICE.
Format of the
Configuration File
<drive>[<drive>,<drive>,
]|<IP Address of File Server>|<username>|<password>
FULL
How
to Set the Current Working Directory
In
the command line prompt enter these commands:
<drive>:
CD
\<name-of-directory>
How
to Create A Command Line Prompt Icon and Launch A Command Line Prompt in
Privileged Mode
If
there is not already an icon on the desktop that launches the Command Line
Prompt, you should create one. Right click a blank spot on the Desktop.? Click New.?
Click Shortcut.? In the box that
is labeled? Type the location of the
item. -- enter this:? CMD.? Click Next.?
Click Finish.? To launch the
Command Line Prompt in privileged mode, follow these steps:? Right-click the new icon.? Click Run as Administrator.? Click Yes.?
How
to Delete A File
erase
<name-of-file>
What
To Do When The Service? Gets Stuck?
Enter
the following command in a privileged command prompt:
taskkill
/f /pid? <Process-Identifier>
Example:
taskkill
/f /pid 54068
You
are able to obtain the <Process-Identifier> from the task manager under
the services tab.
Growler-X
Growler-X is the application that recovers backups that have
been created by the PC-BACKUP-SERVICE.?
Here is an exhibit that depicts how you start Growler-X.
?
A list of unrecovered files can be created if you want one.? See below for an explanation.
?Name of directory to receive recovered files? is entered by the end
user.? We call this directory
?J:\RecoveredFiles?.
When you have previously run Growler-X the answers to the questions will
have been stored to save you from having to reenter them.? When one or more of the parameters for the
present execution is different from the parameters of the previous execution
then you should answer D to ignore the persisted parameters.? Otherwise, answer P.
There will be zero or more backup files on the server organized into
sets.? There is a set of backup files for
each computer that has backups.? Within
that set is a set of backup files for each drive letter.? A backup file is named according to the
corresponding backed up computer and according to the relevant drive letter on
that computer.?
All backup files for all drive letters for all computers are stored on a
file server.? A shared directory named
\HHHHHH\MyBackups contains all the backup files.? The end user is free to copy the contents of
\HHHHHH\MyBackups elsewhere.? Perhaps it
would be convenient to place the backups on an external hard disk drive.? Suppose you place the backup files in this
directory:? K:\OurBackups.? That will be referenced below.
Suppose you want to restore files from a Windows computer whose name is
MARVIN.? Answer MARVIN when you are asked
to ?Enter name of computer being recovered from backup files.?
A ?clean file list? is kept for every computer that enjoys being backed
up.? PC-BACKUP-SERVICE enters into the
clean file list the name of every complete backup file.? An incomplete backup file is one that is
improperly closed.? For example, a backup
file that is being created may be incomplete because of a network failure,
because the computer being backed up was rebooted, or because the server was
rebooted.? You can choose to recover from
an incomplete backup by answering the appropriate question.? Normally you want to recover only from
complete backup files.? Otherwise, you
risk restoring corrupt data or there will be files missing.
Several files from a computer being backed up will be recoverable from
each backup file on the server.? (The
actual number of such files may be in the thousands.)? Each recovered file is checked for correct
length and for a correct cyclic-redundancy-check (CRC).? The CRC guarantees that recovered files are
not corrupt.
Suppose you are restoring drives C and D from MARVIN.? In J:\RecoveredFiles there shall be a C
directory and a D directory.? Subordinate
to C and D shall be the recovered directories and their corresponding files.? There are several standard Windows
directories that are never backed up by PC-BACKUP-SERVICE.? These include ?\Windows? ?\Program Files? and
?\Program Files (x86)?.
Growler-X reads through each backup file in K:\OurBackups in no particular
order.? Each backed up file is marked
with metadata that includes the date and time of the most recent modification.? The intent is for Growler-X to provide the
end user with the most recent modification of every restored file.
During normal operations you can create a text file that names every file
on a computer.? Use the ?getfiles?
EditTechnology command.? When Growler-X
completes, and you specified that you want an unrecovered file list, then such
a file will exist.? The name of the file
is "C:\Users\Public\UnRecoveredFileList.txt".? This feature gives you some idea of which of
your favorite files are not recoverable from K:\OurBackups.
Windows
11
In October 2021 I adopted Windows 11 on my main production workstation.? There are two workstations and two domain
controllers on my LAN.? Both workstations
are joined to the domain.? How to join a
Windows 11 workstation to a domain It isn?t easy.? The secret is to navigate to the About
section of Settings (formerly Control Panel).?
On the About page is Domain or Workgroup which you can tap or click to
join a domain.
Next on our hit parade is a communications failure between the domain controllers and the workstations.? There may be a problem with a Norton security
product which I uninstalled to debug this issue.? A ping produced an error message no matter
what.? I found the Microsoft Windows
Defender Firewall, Domain Section, was on full blast.? I turned it off, thereby exposing my LAN to
all manner of criminal attempts to steal software and/or install ransomware.? But that configuration change caused pings to
start answering. The more the market offers features and products that do things
for security reasons, the more ordinary program behavior get falsely labeled as
probable malware. The Internet was invented by the War Department to route
electronic messages around nuked population centers.? It does not feature useful diagnostic
messages when routing fails.
When you right-click the taskbar you are NOT given the option to close all
the windows on the desktop in order to view the desktop.? You do see an extensive menu.? You now move the cursor to the extreme bottom
right whereupon Show Desktop appears.? Also,
where is the link to task manager?? It?s
gone.? But you can put its icon on the
taskbar.
Simplest
Send Email from Web Form
I have not found documentation on this technique, although it probably
exists somewhere.? The idea is to let the
browser call itself with a specially-crafted URL that contains all of the form
contents.? The browser then invokes a
convenient email client with most of the text boxes filled in and all of the
body filled in with form contents.
<form
action="MAILTO:genericuser@gmail.com" method="post"
enctype="text/plain">
<INPUT
TYPE="submit" VALUE="--OK--">
Convert
from MBR to GPT
This is an essay on putting a PC on a path to The Future.? Windows 11 is the ultra-secure, next
generation release of Windows 10.? Microsoft
has decided to mandate TPM 2.0 and Secure Boot to thwart various exploits that
allow malware to wreak havoc on PCs.? Hard
disk drives (HDD) are configured with partitions.? Partitions are individual areas of writable
space.? Partitions are described in a
partition table that resides inside a certain area of an HDD that also contains
a bootstrap loader for an operating system.?
IBM invented the Master Boot Record (MBR).? Industry found the need to redesign the MBR
because disk capacity increased as technology advanced.? And there were certain other inconvenient
limitations of the MBR.? The Globally
Unique Identifier Partition Table (GUID Partition Table or GPT) is the
redesigned Master Boot Record.? One must
jump through flaming hoops to change a PC from what is called the legacy format
to the new format.? A PC that sports a
GPT must also use the Unified Extensible Firmware Interface (UEFI) which is the
redesignated redesigned Basic Input/Output System (BIOS).? Without UEFI one cannot have Secure Boot and
Trusted Computing Platform 2.0.?
https://docs.microsoft.com/en-us/windows/deployment/mbr-to-gpt
I found this document (see link above).?
The end user can convert the system hard disk drive from MBR to GPT
format by using a utility program calling MBR2GPT that is shipped with Windows
10 (later releases).? No file loss.? Some limitations which MBR2GPT checks for.? An example:?
More than 3 partitions? That stops conversion cold A special option
(allowFullOS) must be used when MBR2GPT is run on a production Windows 10
system.? If this step is successful then
it becomes necessary to reboot to the PC?s native operating system.? In the Dell environment, one presses the F2
key at the Dell logo to enter the BOOT configuration screen. The PC firmware is
then instructed to use Unified Extensible Firmware Interface which is happy to
deal with GPT format hard disk drives. Any options that sport the word Legacy
must be disabled. Once Windows 10 boots into UEFI it is possible to enable TPM
2.0 and Secure Boot.? It appears that
Secure Boot can be enabled or disabled at your pleasure.? TPM 2.0 comes along for the ride. ?You can check to see if TPM 2.0 is provided in
the hardware.? Go to Device Manager and
find Security Hardware.
Using
PowerShell to Download (Not Play) an Audio File
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11,
tls"
$source = 'https://www.virginiavoice.org/audio/1501.mp3'
$destination = 'C:\MWE\1501.mp3'
Invoke-WebRequest -Uri $source -Outfile $destination
$source = 'https://www.virginiavoice.org/audio/1502.mp3'
$destination = 'C:\MWE\1502.mp3'
Invoke-WebRequest -Uri $source -Outfile $destination
$source = 'https://www.virginiavoice.org/audio/1503.mp3'
$destination = 'C:\MWE\1503.mp3'
Invoke-WebRequest -Uri $source -Outfile $destination
$source = 'https://www.virginiavoice.org/audio/1504.mp3'
$destination = 'C:\MWE\1504.mp3'
Invoke-WebRequest -Uri $source -Outfile $destination
$source = 'https://www.virginiavoice.org/audio/1505.mp3'
$destination = 'C:\MWE\1505.mp3'
Invoke-WebRequest -Uri $source -Outfile $destination
The first line informs PowerShell which protocol variant to use.? We know PowerShell is playing the role of a
web browser, such as Microsoft Edge.? The
problem is that we are using port 443 instead of port 80.? So, the hypertext transfer protocol is secure.
There are old versions of the secure variant and new versions.? PowerShell will pick the one that doesn?t
work and then report failure.? It does
not suggest a solution.? The first line
informs PowerShell to try several variants.?
Apparently, this problem has been fixed in Windows releases that include
an updated PowerShell.
Microsoft Store advertises the availability for download of PowerShell.? It does not provide installation media.? It installs PowerShell at its option.? It may or may not do so.
Publish
Software For The Masses Document
The PublishSoftwareForTheMassesDocument
application moves this document from a directory on a workstation to the
network server where you can bring it up on your browser.? The URL is www.mdrsesco.biz/.? Writing the computer program (the app or
application) was challenging but worth the effort.? It complies with technical document RFC959
which is available for viewing at https://www.w3.org/Protocols/rfc959/.
There exists an application that transfers a Word document of the
type htm and the accompanying image files such as the ones shown below.? Research has shown, as has experience, that
the class system.Net.FtpWebRequest
contains all the functions necessary to transfer a binary file from the local
computer to a remote server.? This avoids
all the complexity and odd behavior entailed in writing novel code that
implements the FTP RFC from scratch.
Disappointly,
Microsoft realized that the class does not work properly.? Worse, Microsoft management decided to
deprecate it while leaving the documentation in place. They added the following
paragraph:
We
don't recommend that you use the FtpWebRequest
class for new
development. For more information and alternatives to FtpWebRequest
, see WebRequest
shouldn't be used
on GitHub.
Attributes
The format of the command is:
Attributes <name-of-directory>? [SET | CLEAR]
The command sets or clears the Archive bit in all of the files
contained within the stated directory.? A
comprehensive report is produced.? When
you do not specify SET or CLEAR, no change of attribute occurs, but a
comprehensive report is produced.
CAMO
CAMO is a tool that reports, in sorted order, the names of files in a
directory (datasets in a folder).? You
can sort by size and by date.? There are
three kinds of dates:? date the file was
created, date the file was most recently accessed, and date the file was most
recently written to.
Downdater
for Windows PC
The longest common subsequence (LCS) problem is the problem of
finding the longest subsequence common to all sequences in a set of sequences
(often just two sequences). It differs from problems of
finding common substrings: unlike substrings, subsequences are not required to
occupy consecutive positions within the original sequences. The longest common
subsequence problem is a classic computer science problem, the basis of data
comparison programs such as the diff utility, and has applications in
bioinformatics. It is also widely used by revision control systems such as Git
for reconciling multiple changes made to a revision-controlled collection of
files. [DOWN]
http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
A downdater is a text file comparison program.? It produces from similar inputs (2 files) a
differences file (1 file) that can be applied to the A file to produce the? B file.?
Differences are denoted
???? -N
???? -N,M
The lines that follow N are inserted after line N in file A.? The lines that follow N,M are inserted in
place of lines N through M in file? A.
You can compare two files with DOWN by using the following syntax:
???? DOWN
<name-of-file-A> <name-of-file-B> <differences-file>
You can compare files in corresponding directories with the following
syntax:
???? DOWN
<name-of-directory-A> <name-of-directory-B>
<differences-file>
When comparing directories, the various difference files are
separated with a record of the form:
???? *<name-of-file>
Concrete examples:
You have a text file.? The name of the file may end with .txt.??? You make changes to the text file and save
it to a different filename.? Downdater
compares the two files.? It produces a
file that ApplyChanges (a different computer
program) can use to transform the original file into the new file.? Refer to the exhibit below.
When you make changes to source code, for example,
it is nice to verify what changes you made.??
Problems can be caught early.??
-2,2
K
Means replace lines 2 through 2 in the original
file with K.
-4,6
X
X
X
Means replace lines 4 through 6 in the original
file with X X X.
-7
A
B
C
means ?after line 7 add the lines A B C??
Note that only certain source code and symbolic files are eligible
for comparison. ?These areA complete
list is available if you send a stamped, self-addressed envelope to
the filename
extensions:author.
?
txt
?
cpp
?
h
?
cs
?
erb
?
scss
?
aspx
?
asp
?
rb
?
cmd
?
bat
A better way to compare an old folder containing symbolic files with
an updated version of the same folder involves a special call to DOWN, followed
by execution of a skeleton, followed by execution of a BAT script that calls
DOWN repeatedly to create several differences files rather than the single such
file that otherwise is produced.? The
syntax of the special call is
DOWN
*<name-of-older-folder> <name-of-newer-folder>
<name-of-new-differences-folder>
Notice the asterisk that comes before <name-of-older-folder.? This signifies that DOWN is to produce an SSG
skeleton in the new-differences-file together with an SGS file to be used with
the skeleton.? The skeleton, in
conjunction with the stream generation statements, produces a CMD script that
builds a DifferencesFolder inside the new-differences folder.? Only those folder pairs that exist and
exhibit differences end up in the DifferencesFolder.?
Example:? Run DOWN **<first-directory > <second-directory > <directory-to-place-skeleton.>.? Then CD to <directory-to-place-skeleton>
and type RUN.BAT.? This launches a
lengthy DOS script that repeatedly calls DOWN to construct a DifferencesFolder,
which see.? As part of this mechanism,
the tree structures of the first-named directories are compared and differences
reported, if any.? This operation
requires that you have installed the Symbolic Stream Generator (SSG).
A fourth argument on the command line is optional and may be N or R. or ?see
below?.? You can suppress
the Directory Structure Examiner with the N option.? You can reverse the order of the first two
arguments with the R option.
The option -LongRunning may appear anywhere on the command line to
enable comparisons that exceed 15,000 lines.?
Run times can be exceedingly long when the number of lines is
exceedingly great.? Run times are O(n2)
where n is the number of lines in the longest file.
??????????????????????? The 4th argument of the command line should be -N
or -ND or -R or /squoze.
??????????????????????? -N causes the Directory Structure Examiner not to
run.
??????????????????????? -ND causes the Directory Structure Examiner not to
run and does not delete the TooLargeFiles report.
??????????????????????? -R swaps the 1st and 2nd arguments of the command
line for a reverse comparison.
??????????????????????? /squoze changes input lines such that the space and
tab characters become a single space character.
You can
apply the /squoze option to make variations in spacing between two otherwise
identical lines disappear.? The command
line syntax is:
??????????? ed <input1>
<input2><output-differences-file> /squoze
Repeated
space characters are ?squeezed? out of input files such that two or more
adjacent space characters become a single space character for line comparison
purposes.? The tab character is treated
as if it were a space character.? The
<output-differences-file> contains the original unsqueezed lines for
those lines where a difference is detected even after squeezing.
This is
the exhibit below.
APPLYCHANGES (an application) takes the output of DOWN and applies it
to what is called a base text file to produce an updated text file.? For example, suppose the base file is.
A
B
C
And the updated file is.
A
4
C
Then DOWN will produce the following differences file.
-2,2
4
The command
APPLYCHANGES
reproduces the updated file given only the base file and the
differences file.? [APPLYCHANGES]
Be aware that APPLYCHANGES expects what are called STAR CARDS to
delineate the various files.? You may
have to insert your own STAR CARD if you choose to generate the NEW BASE from
the comparison between a single BASE FILE and its corresponding UPDATED
file.?
A STAR CARD simply names the file as, for example,
*NAMEOFFILE
Here is a sample of real-world output.? The asterisk record signifies the following
difference records apply to the named file.
Suppose you have a directory (call it Sam) that is populated with
project directories.? Each project
directory represents a Visual Studio solution to a different problem.? You maintain current and backup copies of Sam.? You work on improving a solution and wonder
what changes you ended up making.? Knowing
what changes you made can be helpful when you get around to altering the
documentation to reflect the changes.? It
can be helpful in detecting mistakes.? It
can be helpful when you need to create two similar solutions that contain
exactly the differences you want.? Here
is a command file for doing a massive comparison of Sam with one of its
backups:
1. C:
2.
CD \Users\Public
3. DELTREE .\LSA
4. MKDIR LSA
5. CD LSA
6. DOWN *U:\ C:\CSOFTWARE F60
7. CD \Users\Public\LSA\F60
8. .\RUN.CMD
9. CD \Users\Public\LSA\F60\DifferencesFolder
10.
ERASE
.\DifferencesFolder.TXT
The command file RUN.CMD is generated by DOWN.EXE.? It invokes the Symbolic Stream Generator that
sequentially calls DOWN.EXE for corresponding files in Sam and its backup.? In the end you get a directory named
DifferencesFolder that contains one directory for each solution that has
undergone non-trivial changes.? Crystal_DOWN
is an application that produces a report from a single entry in
DifferencesFolder. Such an entry corresponds to a Visual Studio solution as
previously mentioned.? The OUT.CMD file
produced by RUN.CMD contains one commented-out command line for each folder
produced by OUT.CMD.? You can uncomment
one of the lines and launch it to obtain a report that shows the source lines
that the correction file deletes.? These
lines are prefixed with six asterisks.? If
application A contains source files B, C, and D then the correction file will
contain a subset of corrections separated with star cards for B, C, and D.
Each directory one level below the <base-directory> is a Visual
Studio project.? In the subordinate tree
is source code that ApplyChanges will locate and apply the corrections that
exist in corresponding entries in <PCF-directory> to produce the
<updated-base-directory).?
Projects 1.0 and 2.0:
The BAG project contains one file (FLOWER.TXT).? The revision 1.0 resides in the directory
A0.? The revision 2.0 resides in
directory A1.? The DOWN application is
commanded to compare all the symbolic files in A0 with those in A1.? DOWN generates a script in the file
RUN.CMD.? Input to SSG is the skeleton
(an SSG application) which resides in SKEL.TXT; the data that the skeleton
analyzes resides in SGSSES.TXT.
The RUN.CMD script is shown below.?
Notice that it launches the Symbolic Stream Generator application.? ASCIIFY is an application that converts the
symbolic output of SSG from Unicode to ASCII. The legacy shell does not handle
Unicode.
It produces the directory DifferencesFolder, with one subordinate
directory per project.? In this example,
there is one project (BAG).? In BAG.TXT
are the lines that, when applied, change the 1.0 source code to 2.0 source
code.
The source code in FLOWER.TXT is ABCDEF in revision 1.0 and 123456 in
revision 2.0.? The correction image
*FLOWER.TXT directs that FLOWER.TXT is to be revised.? The correction image -1,6 directs that lines
1 through 6 in revision 1.0 shall be replaced by the images that follow.? Thus, ABCDEF becomes 123456.
Next, ApplyChanges is launched to apply the correction lines that
were produced by DOWN to upgrade 1.0 to 2.0.
SSG (Symbolic Stream Generator) is an app that
compiles a program called a? skeletona
skeleton? and simultaneously compiles a text
file that is populated with Stream Generation Statements (SGSes).? The skeleton contains the logiclogic.? The SGSes containn
the data.? The program
creates a text file in accordance with directives in the SGSes.? SSG is a handy tool when you want to
generate, for example, a lengthy program structure (e.g. a case statement for
incorporation within a C++ or C# app) based on a list of things.? I have used it many times for that purpose.? But SSG is capable of doingcan
do more complex things.? For
example, a commercial software publisher uses formerly
used it to generate MXML, the language of Adobe Flex
(which is now obsolete), to produce web apps that allow end users
to enjoy a Rich Internet Experience.? The
SGSes describe what the page or pages are supposed to look like and the
skeleton transforms the description into exactly the right MXML for the purpose.? You can RTFM at http://www.mdrsesco.biz/SSGManual.htm.
There is a tiny feature added in 2020 that allows you generate an
integer with leading zeroes.? The
notation [*<variable>] generates the variable length substring
representation of the integer stored in <variable>.? The new feature allows you specify a fixed
field width.? There will be leading
zeroes to make the field the same width for all integers.? The additional syntax is
[*<variable>:<field-width>]. Example: [*Z] becomes [*Z:2] which
specifies that the edited field is two characters in length with a possible
leading zero. [SSG]
????????????????????????????????????????
ExFTP
FTP is File Transfer Protocol. ExFTP is an application that allows
you to send a file to or receive a file from an FTP server.
Remote site address is the IP address of FTP
server.? Local filename is the
fully-qualified filename on the PC that is running ExFTP that shall send from
or receive to the contents of the file.? Remote
filename is the short filename on the FTP server that is the source of data or
the destination for data depending on whether Receive is checked or Send is
checked, respectively.? The S button is
to be pressed to transfer the short filename (no drive letter, no backslashes)
to Remote filename.? FSERV sets the
Remote site address to the MDRSESCO local FTP server.? ADC sets the Remote site address to the
MDRSESCO other local FTP server.? DiscountASP
sets the Remote site address to MDRSESCO subscription service ISP file server.? Tech Road sets the Remote site address to the
MDRSESCO client?s file server.? Remote
site username is part of the credentials required to login to the selected FTP
server.? Remote site password is part of
the credentials required to login to the selected FTP server.? The GO button is pressed when all of the text
boxes have been properly filled in.
LAUNCH
The Windows Registry is a junk drawer (a database divided into hives)
of parameters that govern the behavior of the Windows operating system and
various applications.? One of the
parameters allows you to specify an application, script, or other thing that
can be launched after an end user has entered valid credentials.? NETPLWIZ is a Microsoft application that
ships with Windows that allows the end user to specify the logon credentials
such that logon occurs automatically following a reboot.? Once the desktop becomes visible, after a
reboot, the LAUNCH application will instruct Windows to start an application or
a script.? This is done via the Registry.? LAUNCH should be executed from a non-elevated
command line.? In other words, LAUNCH
should be run under a user account other than Administrator.?
Syntax:? LAUNCH <label>
<file-to-launch>
The label should be a unique alphanumeric string.? The file-to-launch should identify an EXE
file or a CMD or BAT file.? LAUNCH
verifies the existence of the file.?
Example:? LAUNCH? PRIME95?
C:\$001\PRIME95.EXE
Successful completion is obvious.?
At the next logon, the PRIME95.EXE application will be Windows?s
responsibility to launch.? You can remove
a previously entered Registry entry by providing only the label.
Example:? LAUNCH? PRIME95
From
AUTOMATION to DARTH
From AUTOMATION to DARTH is a practical end user interface which is
used at a radio reading service for the blind.?
The service broadcasts constantly.?
There is a daily live broadcast of the local newspaper.? There are many broadcasts pre-recorded for
later broadcast.? There are broadcasts
that originate in a similar service in Minneapolis-St. Paul. Twin Cities
emissions are relayed from a satellite and broadcast, as usual, on a local
PBS-affiliated FM radio station.? Special
radio receivers are needed for blind subscribers to receive the service, which
is on a sub-channel of the aforementioned FM radio station.? Sometimes a recorded radio broadcast is to be
made available to clients of the DIAL-IN Service.? Blind subscribers can browse newspapers using
DTMF telephones.? To move a recorded
radio broadcast to the DIAL-IN service all one has to do is copy a WAV file
from the SCA radio station AUTOMATION computer to the DIAL-IN Service computer.? To make this so easy that a child can do it,
Mark Rockman designed and implemented this end-user interface.? Policy dictates that lengthy programs be
divided into two parts.? There is a
checkbox for that.
Directory
Sizes (dirx)
Suppose some program reports the OUT-OF-SPACE condition because the
target drive letter has exceeded its capacity.?
It would be helpful to know which directories on the drive must be
relocated.? You can use DIRX to get a
report on the size of each directory.?
The largest ones can be relocated off the drive that is too full.?
Grid
Binding for the Web and for the PC
For the Web:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
? protected void Page_Load(object sender, EventArgs e)
? {
? System.Data.SqlClient.SqlConnectionStringBuilder builder = new
System.Data.SqlClient.SqlConnectionStringBuilder();
? builder["Data Source"] = "(local)";
? builder["User ID"] = "sa";
? builder["Password"] = "123456";
?? ?system.Data.SqlClient.SqlConnection
sqlConnection1 = new
System.Data.SqlClient.SqlConnection(builder.ConnectionString);
? System.Data.SqlClient.SqlCommand cmd = new
System.Data.SqlClient.SqlCommand();
? cmd.CommandType = System.Data.CommandType.Text;
? cmd.Connection = sqlConnection1;
? cmd.Connection.Open();
? cmd.CommandText = "USE MWEDatabase;";
? int nonqueryResult = cmd.ExecuteNonQuery();
? SqlConnection sqlConnection = sqlConnection1;
? SqlCommand sqlCommand = new SqlCommand( "SELECT * FROM
Customers", sqlConnection);
? SqlDataReader reader = sqlCommand.ExecuteReader();
? GridView1.DataSource = reader;
? GridView1.DataBind();
? }
}
For the PC:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace BindQueryToGridWinForms
{
? public partial class Form1 : Form
? {
? public Form1()
? {
? InitializeComponent();
? System.Data.SqlClient.SqlConnectionStringBuilder builder = new
System.Data.SqlClient.SqlConnectionStringBuilder();
? builder["Data Source"] = "(local)";
? builder["User ID"] = "sa";
? builder["Password"] = "123456";
? System.Data.SqlClient.SqlConnection sqlConnection1 = new
System.Data.SqlClient.SqlConnection(builder.ConnectionString);
? System.Data.SqlClient.SqlCommand cmd = new
System.Data.SqlClient.SqlCommand();
? cmd.CommandType = System.Data.CommandType.Text;
? cmd.Connection = sqlConnection1;
? cmd.Connection.Open();
? cmd.CommandText = "USE MWEDatabase;";
? int nonqueryResult = cmd.ExecuteNonQuery();
? cmd.CommandText = "SELECT * FROM Customers";
? SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd.CommandText,
cmd.Connection);
? SqlCommandBuilder commandBuilder = new
SqlCommandBuilder(dataAdapter);
? // Populate a new data table and bind it to the BindingSource.
? DataTable table = new DataTable();
?? ?table.Locale = System.Globalization.CultureInfo.InvariantCulture;
? dataAdapter.Fill(table);
? BindingSource dbBindSource = new BindingSource();
? dbBindSource.DataSource = table;
? DataGridView dbGridView = dataGridView1;
? // Resize the DataGridView columns to fit the newly loaded content.
?
dbGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
? // you can make it grid readonly.
? dbGridView.ReadOnly = true;
? // finally bind the data to the grid
? dbGridView.DataSource = dbBindSource;
? }
? }
}
Creating
a Word List Using the Text Editor
Here?s the result of combining three applications to build
and maintain a list of words gleaned from newspaper articles.? The text editor tokenizes lines of text
(isolates words) producing a text file. An existing text file of alphabetized
words (no repeats) is combined (using cat) with the newly gleaned words.? Text editor alphabetizes the combination.? The File Comparator (DOWN) shows you the
location and value of each added word.? Finally
the combined list is saved.
The shell script:
C:
cd \Words-EN
ed text.txt task1.txt
C:
cd \Words-EN
cat Words.txt unique-tokens.txt merged-tokens.txt
C:
cd \Words-EN
ed merged-tokens.txt task2.txt
down Words.txt merged-tokens.txt diff.txt
type diff.txt
The word extractor:
tokenize
sort
unique
w unique-tokens.txt
The list combiner:
sort
unique
exit
Here?s a list of newly added words:
-220
alphabetized
alphabetizes
-1264
combination
-1266
combining
-1302
comparator
-2944
gleaned
-3624
isolates
-3995
location
-4079
maintain
-4483
newly
-4486
newspaper
-5859
saved
-6912
Tokenizes
Text
Editor (ED)
There follows a description of what is nominally a text editor.? It is that and more.? [EditTechnology]
A Partial
List of Rockman's Text Editor Commands
v
ace
v
add
v
annuity
v
append
v
asga
v
asgax
v
attrib
v
begin
v
bmi
v
breakup
v
bt
v
camo
v
cd
v
change
v
climit
v
close
v
columnblank
v
combine
v
commands
v
copy
v
copychg
v
corr2
v
cpumask
v
crp
v
cwd
v
datefix
v
dcopy
v
delete
v
deleteafter
v
dhold
v
dirx
v
dirsize
v
dnext
v
dse
v
dup
v
easter
v
egl
v
ej
v
eject
v
elname
v
erl
v
excelhelper
v
exist
v
extract
v
f1
v
filecompare
v
find
v
flist
v
free
v
gather
v
getfilenames
v
getfiles
v
getshort
v
ghp
v
gl
v
goadmin
v
goto
v
head
v
hlbl
v
hold
v
ibefore
v
ident
v
insert
v
inuse
v
isadmin
v
isprivil
v
kill
v
last
v
lgoff
v
lizard
v
locate
v
ls
v
mdl
v
merge
v
missing
v
next
v
o
v
omit
v
opc
v
open
v
opennew
v
own
v
permutation
v
ping
v
play
v
pmask
v
print
v
ps
v
ps1
v
pswdoff
v
putquotesaround
v
pwoff
v
q
v
randgen
v
rb
v
rc
v
rdp
v
replicating
v
retype
v
reverse
v
ro
v
runsql
v
scale
v
select
v
sizes
v
sort
v
split
v
sql
v
sunrise
v
superficial
v
sz
v
tab
v
td
v
tld
v
toc
v
tokenize
v
top
v
touch
v
twilight
v
undo
v
unique
v
unsplit
v
up
v
uro
v
vw
v
wav
v
winplaces
v
wpt
v
write
v
wulog
Aliases
General
Principles
The
Rockman Text Editor accepts commands from the keyboard or from a file.
The syntax of the shell command is
ed
[name-of-file-to-be-edited [name-of-command-stream]]
You
can omit both command line arguments, in which case commands can establish what
is to be edited, and commands shall originate at the keyboard. You must provide
name-of-file-to-be-edited when you want to provide name-of-command-stream.
Commands
comprise three parts: 1) the name of the command, 2) option, 3) arguments.
Example:
r,11 PAIJ
contains
the r command, the option 11, and the argument PAIJ. Only the name of the
command is mandatory.
The
editor maintains the file that is being edited in area called the memory
file. The content of the memory file can be created from
scratch or it may originate in a file in a file system on a device. The
primarily purpose of the Text Editor is to support your efforts to make changes
to the memory file. Eventually, once you are done making changes,
the memory file is copied to a file in a file system on a device for long-term
storage.
The
editor is either in EDIT mode or in INPUT mode. You can switch between modes by
entering a blank line. In EDIT mode, you can instruct the editor with commands.
In INPUT mode, non-blank lines are successively added to the memory file.
The
editor pulls all of the file's text into memory. In memory is where all the
editing occurs. At the end of your editing session, it is your choice whether
to save any changes that you have made or to discard the changes. Type EXIT to
save the changes. Type OMIT to discard them.
While
you are editing, keep in mind that there is always a current line, which you
can see by typing PRINT. Navigation throughout the memory file is by line
number, which may be absolute (e.g. go to line 5) or relative (e.g. go 5 lines
down from here).
The
text editor is one of several Rockman's Tools that you may find useful.
The Symbolic Stream Generator allows you to write programs that generate
text files based on simple, structured data. The Downdater allows
you to see the differences between text files presented in -n and -n,m
notation. ApplyChanges allows you to apply changes in -n
and -n,m notation to a text file in order to obtain a new text file.
Ordering
Write
to mrockman@acm.org.
Command
Documentation
ace
The
ace command displays Access Control Entries (ACEs) that are component parts of
Access Control Lists (ACLs).? ACLs are
instrumental in granting or denying permissions to access system resources; in
this case files and directories.? Directories
are also known as Folders.? The syntax of
the command:? ace <name-of-file-or-name-of-directory>.? When you name a file, the command reports all
associated ACEs.? When you name a
directory, the command reports the ACLs associated with the directory, all the
directories therein contained and all the files therein contained.
add
The
add command brings in at the current location additional lines from either of
two sources. If you name a text file then the full file is added at the current
point in the file being edited. If you don't name a file then lines from the most
recent COPY or DCOPY command are added at the same place.
annuity
The
annuity command creates an amortization table following an interactive query
session that requests all necessary data.?
You must provide the amount borrowed, the duration of the repayment
period in months, the annual percentage rate, the starting year and month.
append
The
append command relocates the current edit point to after the last line in the
file being edited. The editor then goes into INSERT mode.
asga
The
asga command opens, when possible, the named file in such a manner that another
process can also open the file.? The free
command closes the file.? Only one file
at a time can be open during an edit session.
asgax
The
asgax command opens, when possible, the named file in such a manner that
another process cannot also open the file.?
The free command closes the file.?
Only one file at a time can be open during an edit session.
attrib
The
attrib command reports the attributes of a file.? It does not report the attributes of a
directory.? The syntax:? attrib <name-of-file>.? What follows shows all the possible
attributes.
if
((System.IO.File.GetAttributes(filename) &
System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly)
?answer = "R" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Hidden) == System.IO.FileAttributes.Hidden)
?answer = "H" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.System) == System.IO.FileAttributes.System)
?answer = "S" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Directory) ==
System.IO.FileAttributes.Directory)
?answer = "D" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Archive) == System.IO.FileAttributes.Archive)
?answer = "A" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Device) == System.IO.FileAttributes.Device)
?answer = "V" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Normal) == System.IO.FileAttributes.Normal)
?answer = "N" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Temporary) ==
System.IO.FileAttributes.Temporary)
?answer = "T" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.SparseFile) ==
System.IO.FileAttributes.SparseFile)
?answer = "P" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.ReparsePoint) ==
System.IO.FileAttributes.ReparsePoint)
?answer = "X" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Compressed) ==
System.IO.FileAttributes.Compressed)
?answer = "C" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Offline) == System.IO.FileAttributes.Offline)
?answer = "O" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.NotContentIndexed) ==
System.IO.FileAttributes.NotContentIndexed)
?answer = "N" + answer;
?if ((System.IO.File.GetAttributes(filename)
& System.IO.FileAttributes.Encrypted) ==
System.IO.FileAttributes.Encrypted)
?answer = "E" + answer;
begin
The
begin command works with the COPY and DCOPY commands to mark the starting line
of a copy operation.
bmi
The
bmi command calculates Body Mass Index for an individual?s height and weight.? It accepts English and metric units values.
?
Format 1: bmi English,5,9,150
?
Format 2: bmi metric,175,68
The
first form syntax is bmi
English,<height-in-feet>,<height-in-inches>,<weight-in-pounds>
The
second form syntax is bmi
metric,<height-in-centimeters>,<weight-in-kilograms>
? If your BMI is below 20:
? This
indicates a lean BMI, which means you have a low amount of body fat.?
? If you
are an athlete, this can be desirable.
? If you
are not an athlete, a lean BMI can indicate that your weight may be too low
which may lower your immunity.
? If
your BMI and body weight are low, you should consider gaining weight through
good diet and exercise habits, to increase your muscle mass.
? If
your BMI is between 20 and 22:
? This
indicates the ideal, healthy amount of body fat, which is associated with
living longest, and the lowest incidence of serious illness.
?
Coincidentally, it seems this ratio is what many individuals perceive to be the
most aesthetically attractive.
? If
your BMI is between 22 and 25:
? This
is still considered an acceptable range, and is associated with good health.
? If
your BMI is between 25 and 30:
? You
are considered "Hefty" and should find ways to lower your weight,
through diet and exercise.?
? You
are at increased risk for a variety of illnesses at your present weight.
? You
should lose weight by changing your diet and exercising more.
?? ?If your BMI is over 30:
? This
indicates an unhealthy condition, your excess "Prosperity" is putting
you at risk for heart disease,
?
diabetes, high blood pressure, gall bladder disease and some cancers.
? You
should lose weight by changing your diet and exercising more.
breakup
The
breakup command partitions all the lines being edited into multiple files,
20,000 lines in each file.? The new files
appear in a new directory C:\Users\Public\Breakup and the files are numbered
sequentially as 1.txt, 2.txt, and so forth.
bt
The
bt command displays the operating system version, the logon server name,
whether the computer is joined to a domain, the logged in user name, the
operating system build number, the marketing name of the operating system
version, the computer name, the time of last system reboot (also called system
restart), the duration of current system uptime, and the register width in bits
according to the operating system build type. The bt command also displays the
various IP addresses that point to the local computer. Additional
information about the computing environment is provided in the edit file.
For example, OSArchitecture 64-bit is an environmental factoid that may
interest you.
camo
The
camo command erases whatever lines of text exist, if any, in main memory.? Then it produces a report enumerating all the
files in the named directory sorted by size, largest first.? You can save the report to a text file, if
you like.
cd
The
cd command changes the current working directory to the named directory.
change
The
change command replaces one occurrence or several occurrences of a string with
something else. The argument contains the pattern /old-string/new-string/ where
the slash is some convenient delimiting character, old-string is a substring to
be replaced, and new-string is what the replacement shall be. What follows is a
more complete description of the syntax.
Syntax
of change command:
change[,<option>]
<delimiter><first-string><delimiter><second-string><delimiter><second-option>
Typically,
<delimiter> is the slash character, like this:? /
When
<first-string> or <second-string> or both contain / then some other
character that doesn't appear is used.
The
change command changes occurrences of <first-string> substituting <second-string>.? However, the meaning of the arguments can be
reversed.
When
<option> appears, it is an integer and denotes the number of lines
including the current line to be inspected for changes.
For
example, if we are on line 4 and <option> is 3 then lines 4, 5, and 6
will be inspected.? When <option>
is * the integer is 999999.
Ordinarily
only the leftmost occurrence of <first-string> is changed.
However,
when <second-option> is A or G then all occurrences on a line are
changed.
When <second-option>
is A then the scope of the change is the current line and all following lines.
When
<second-option> is G then the scope of the change is the current line and
those lines within the scope specified by <option> or 1 line when
<option> is not present.
When
<second-option> is R then the meaning of <first-string> and
<second-string> are reversed.
UNDO is
a separate command that allows you to reverse changes you made in error since
the last time the top of the file was traversed.
The
change command, once entered, can be repeated by simply entering the command by
itself.? You omit everything beginning
with the leftmost <delimiter>.? You
may, if you choose, modify the command to include <option>.? The repeated command is possible because
everything except <option> is saved by the text editor.
The
command C,S displays the saved change command status.? There must be some text in the file for you
to see the status.
Task to Be Performed |
The Necessary Command |
Characterization |
Change the first occurrence of ABC
on the current line and the next two lines |
C,3 /ABC/XYZ/ |
ChangeFirstOccurrenceNextSeveralLines |
Change the first occurrence of ABC
on the current line |
C /XYZ/ABC/R |
ChangeFirstOccurrenceCurrentLineOnly |
Change all occurrences of ABC on the
current line and the next two lines |
C,3 /ABC/XYZ/G |
ChangeAllOccurrencesNextSeveralLines |
Change all occurrences of ABC on
the current line and on all following lines |
C,* /ABC/XYZ/G or C /ABC/XYZ/A? |
ChangeAllOccurrencesCurrentLineAndThereAfter |
Change the first occurrence of ABC
on the current line and on all following lines |
C,* /ABC/XYZ/ |
ChangeFirstOccurrenceCurrentLineAndThereAfter |
Determine whether a change command
has been saved. |
C,S |
|
climit
The climit command limits the range of columns affected by
any of the forms of the change command. Specify the left and right column
numbers separated by a SPACE. Example: cli 42 49
close
The
close command causes the editor to write the lines in the memory file to disk
and then causes the editor to terminate.
columnblank
The
columnblank command operates on all the lines of the in-memory text file.? You specify which columns you want blanked
and the command performs that function.? The
syntax allows you specify several space-separated ranges and/or individual
column numbers.? For example, the command? columnblank 42 39,80? puts a blank space in
column 42 and blank spaces in columns 39 through 80, inclusive.? This is for tabular data wherein your desire
is to eliminate certain columns. Your column numbers must be integers.
commands
The
commands command lists the canonical names of all the editor's commands in
sorted order.
copy
The
copy command creates a store that contains the lines between the begin marker
and the current line.
copychg
The
copychg command duplicates a directory tree, including leaf nodes.? The filename extension of the leaf nodes is
altered according to specification.? You
name the input directory, the output directory, and the new filename extension.
corr2
The
corr2 command changes the LWT (last write time) of the directories that are
subordinate to the named directory.? The
LWT of a directory reflects the most recent LWT of all the contained files.? File Explorer (formerly Windows Explorer)
takes no care to do this.? The LWT that
it leaves behind is usually the timestamp that connotes the time when copying
occurs.? Syntax:?? corr2 <name-of-directory>
cpumask
The
cpumask command reports the configuration of central processors in the local
computer.?
crp
The crp command (for Create Restore
Point) must be run with the text editor elevated.? It creates a restore point. The System
Restore button of the System Protection tab of the Advanced System Settings of
the Properties page of This PC in Windows Explorer allows you to restore the
settings saved in the restore point.
This option takes your PC back to an earlier point in time,
called a system restore point. Restore points are generated when you install a
new app or driver, and when you create
a restore point manually. Restoring won?t affect your personal
files, but it will remove apps, drivers, and updates installed after the
restore point was made.
1.
In the search box on the taskbar, type control panel,
and then choose it from the list of results
2.
In the Control Panel search box, type recovery.
3.
Select Recovery > Open System
Restore.
4.
In the Restore system files and settings box,
select Next.
cwd
The cwd command displays the current
working directory.
deleteafter
The
deleteafter command finds a match on the current line, erases the match, and
everything to the right of the match.
dcopy
The
dcopy command is identical to the copy command except that the lines that are
sent to the store are deleted.
delete
The
delete command removes one or more lines from the file being edited starting
with the current line. You can specify the number of lines to delete (e.g.
DELETE 5). The default number is 1.
dhold
The
dhold command saves the current line to a special store (named the
"hold" buffer) and deletes the line from the file being edited. You
can resurrect the line with the dup command.
dirsize
Suppose
you have a folder.? In that folder are
several other folders.? These are top
level folders.? You want to know how much
space the files in those folders occupy.?
The dirsize command reports that information. The dirsize command has
been superseded by the sizes command.
dirx
From the command line, enter dirx <name-of-directory>.? Each directory in the named directory is
inspected for the files that it contains and for the files in the directories
that it contains, recursively.? Reported
is the total size in bytes of all the files in the named directory.
dnext
The
dnext command deletes the current line and sets the current line to the line
that follows it.
dse
The
dse command performs a Directory Structure Examination. You can detect
structural differences between similar directories. A structural difference
occurs when a directory or a file appears in one root directory but not in the
corresponding place in the other.
dup
The
dup command inserts one or more lines at the current position. The lines
inserted originate in the hold buffer. You can specify the number of lines to
duplicate (e.g. DUPLICATE 5). The default number is 1.
easter
The
easter command displays the date upon which Easter next falls.? Based upon an algorithm published as follows:? Copyright (c) Simon Kershaw 1996. All rights
reserved.
eject
The
eject command causes the operating system to flush the buffers of a removable
device and, perhaps, to physically eject the device. The format is ej
drive-letter.
elname
The
elname command displays the name of the file that is being edited.
erl
The erl command does a patterned
extract of records from a comma-separated values file.? The idea is to get rid of the column heading
records and various interstitial records that clutter up the file.? You specify, in order, the name of the input
file, the name of the output file, the number of records to discard at the
start of the file, and the number of records to skip following those records
that are retained. The command assumes that retained records boast of a date in
MM-DD-YY format in the leftmost column.? Since
Excel handles that format inconsistently, the command reformats the date to
Month Day, Year format.? For example,
01-02-03 is transformed to? January 2,
2003?.? If you have a text file open when
you type in the erl command then the extracted lines end up in the file.? If not, not.?
The command to extract retained lines could be:? erl C:\Users\Public\TESTBED.TXT
"C:\Users\Public\Outlet.txt" "2" 1
excelhelper
The
excelhelper command modifies a comma-separated value file such that those
comma-separated fields that (apparently) contain a date are revised to a form
that Excel finds unambiguous.? The Excel
in Microsoft?s Office Suite 2007 is inconsistent in handling dates of the form
MM/DD/YYYY, YYYY/MM/DD, MM-DD-YYYY, and YYYY-MM-DD.? So these are changed to <month-name>
<day-of-month>, <year> within double quotes. The month always
precedes the day-of-month unless you put an asterisk on the command.? Then the day-of-month always precedes the
month as is usual is Europe.? Use? excelhelper *? when the date is 15/4/2015,
for example.
exist
The
exist command probes the named directory or filename for existence.? The several outcomes are: 1) the name is
reported to be a directory, 2) the name is reported to be a file, 3) the system
threw an exception when probing the name, 4) the name does not exist in the
file system.? These outcomes are
according to the .NET Framework which produces different existence results
depending on Platform Target, a compilation parameter.? With Platform Target set to x86 you get one
answer.? With Platform Target set to x64
you get a different answer.
exit
The
exit command causes the editor to write the lines in the memory file to disk
and then causes the editor to terminate.
extract
The
extract command removes all those lines in the edit file that do not contain
the argument pattern.? For example, the
command extract InstallUtil.exe
leaves the edit file with only those lines that contain InstallUtil.exe.? Matches are case-insensitive.
f1
The
f1 command changes routes.rb in a Ruby on Rails application file so that the
application uses named routes.
filecompare
The
filecompare commands performs a byte-for-byte comparison of the two files that
you name.? The answer is YES or NO.? YES: the two files are identical.? NO: the two files are different.? Suppose some program you?ve been using for
years suddenly halts with an addressing exception.? Suppose you have a backup copy of the .EXE
file.? Suppose you compare the backup
with the production copy.? Then you can
assure yourself that the problem is not due to file corruption.
find
The
find command searches the lines following the current line for a matching
pattern. In the pattern, space characters match any character at the same
relative position on a targeted line. You can use find to locate based on
columnar position. When a tab character is defined (see tab command), you can
use it as part of the pattern. For example, suppose LMJ appears in columns 11,
12, and 13 respectively. With the tab character set to semi-colon and tab
positions set to 11, 21, and 39, the command
find
;LMJ
matches
on the first line following the current line that contains LMJ in columns 11,
12, and 13. The command option specifies the desired number of match
occurrences. The default is 1.
flist
The
flist command creates in the current file a complete listing (with headings) of
the symbolic files of the named directory.
free
The
free command closes the file that was previously opened with the asga or asgax
command.? Just because you open a file
with one of these commands doesn?t mean you are allowed to touch the file?s
contents.? These commands exist solely to
demonstrate how the Win32 file system file open function operates.? The number of links to the file is reported.? This relates to the concept of? hard link, ?in which multiple file system name entries
point to the same physical file.? It?s a
kind of aliasing mechanism.? You cannot
open a hard link (an alias) via asga/asgax.?
You can open the file that the hard link designates.
gather
The
gather command, from a specified directory tree, aggregates all the files that
have the same filename extension.? Syntax:? gather
<input-directory-name>,<output-directory-name>,<filename-extension>
The
output directory at <output-directory-name> and all its content is
removed before the command commences to locate and copy files to it.? Many files may have the same filename but
only one such file (by each distinct name) ends up in the output directory.? This command was motivated by the iPhone
which stores many photographs in several randomly named directories.? The desire is to aggregate all the JPG files
in a single Windows directory.? Suppose
there is a directory C:\A that contains directories C:\A\B and C:\A\C.? Suppose further that 1.jpg resides in C:\A\B
and 2.jpg resides in C:\A\C.? The gather
command will put copies of 1.jpg and 2.jpg in the output directory.? The output directory will contain no
directories of its own. A special case of RASTER as <filename-extension>
matches any of the following filename extensions: png bmp dib jpg jpeg jpe jfif
gif tif tiff pic pict mov avi.
getfiles
The
getfiles command enumerates the files in a specified directory.? If you don?t specify a directory, the default
directory C:\ is used.? Enumeration
depends on the .NET Framework method System.IO.Directory.GetFiles() and its
GetDirectories() counterpart.? Certain
files for unknown reasons cannot be enumerated this way.? Each file is listed on a separate line
prefixed with its time-of-last-write.? The
format of the timestamp is YYYY-MM-DD HHMMSS.?
You can sort the files by timestamp.?
Use the SORT command.
getshort
The
getshort command uses INTEROP to access the Win32 method that converts a normal
NTFS filename to its 8.3-format equivalent.?
The 8.3 format originated in the FAT file system. It is retained for
compatibility reasons.? The long filename
is printed.? Then the short filename is
printed.? The text currently being edited
is erased.? A one-line file replaces it.? That line contains the short filename.? This all works splendidly unless the named
file does not exist, in which case Windows returns a zero-length string to
represent what it believes properly to be a? representation of the short
filename.? Unless the long filename is
syntactically incorrect, it would have been possible for Windows to present a
valid short name version even when the file itself does not exist.? The documentation at https://msdn.microsoft.com/en-us/library/windows/desktop/aa364989%28v=vs.85%29.aspx
neglects to mention that GetShortPathName (the exposed method of interest)
needs the path to exist. For example, getshort
C:\Documents and Settings works, yet getshort
Ugly does not.
ghp
The
ghp command has two forms:? ghp true and
ghp false.? The command tries to obtain
granted privileges with true. The command tries to revoke privileges with false.? All the privileges known at editor build time
are entered into the edit file (assuming you?ve provided the name of one) along
with YES when granted and NO when revoked.?
Windows does not permit just anyone to obtain a granted privilege.? Some privileges are granted to mere mortals.? Some are granted only to deities.? Group Policy governs those privileges that
are granted.
goadmin
The
goadmin command terminates the current instance of the text editor application
and restarts the application under the Administrator account.? This gives the application extraordinary
privileges.? You should save any text
editor work that you may have accomplished before calling goadmin.? Once the application restarts, use the old
command to reload your work.? To check
that you have, in fact, been granted privileges, enter the isadmin command.
goto
The
goto command relocates the current position to the line whose number is given.
A synonym for goto is simply the line number.
head
The
head command is identical in function to goto 1.
hlbl
The
hlbl command is HTML Line by Line.? It
reformats the content of the file that is currently open, which should be an
HTML stream, such as one might find in a file with filename extension htm or
html.? The idea is to put each tag or
tag-delimited content on a separate line, for ease of analysis by a human
observer.? The output is intended to be
semantically identical to the input.
hold
The
hold command saves the content of the current line to a special place inside
the editor called the "hold" buffer. You can resurrect the line
with the DUP command.
hw
The unimplemented hw command sets a horizontal window on the
file being edited. The window applies to a specified range of columns. For
display purposes only, columns outside the window do not appear. Suppose you
want to see columns 11 through 21. You enter hw 11 21.
ibefore
The
ibefore command is identical to the insert command except that the line is
inserted before the current line.
insert
The
insert command inserts a new line after the current line.
inuse
The
inuse command probes the file you name to see if it is in use by another
process.
isadmin
The
isadmin command displays YES when the editor is running with elevated (i.e.
Administrator) privileges and NO otherwise.
kill
The
kill command terminates the process whose name you specify.? To obtain a list of extant processes, use the
ps command.
last
The
last command relocates the current position to the last line in the file.
lgoff
The
lgoff command causes the editor to exit without saving the current file and
causes the Windows logon session to terminate.
lizard
The
lizard command programmatically invokes the following command:? cmd /C "dir /B <directory-name>".? The resulting lines are internally
collected and separated.? Each line names
a directory or a file that appears superficially in the named directory.? System.IO.File.Exists()
is called for each file (directories having been filtered out) so as to seek
those files that dir enumerates but that System.IO.File.Exists()
claims doesn?t exist.? You must name a
directory as the first and only argument to the lizard command.
locate
The
locate command is similar to the find command except that there is no columnar
bias in the pattern. Searching begins with the first line after the current
line and is not case sensitive.
ls
The
ls command lists the directories and file in the current working directory.
mdl
The mdl command maps a drive letter to a share (i.e. a
shared directory (also known as a shared folder)). The argument is of the
form <drive-letter> <share>. Example: mdl B
\\fserv\wpdocsb
next
The
next command relocates the current position to the next line in the file.
o
The
o command is similar to the print command except that printing starts with the
line following the current line.
omit
The
omit command causes the editor to exit without saving the memory file to disk.
open
The
open command begin a new editing session by loading the named file's lines into
memory. The named file must pre-exist.
opennew
The
opennew command is similar to the open command except that the file need not
pre-exist and, if it does, the content of the file is truncated.
own
The
own command reports the owner of the specified directory or file.
permutation
The
permutation command replaces the contents of the in-memory text file with all
permutations of the string provided as an argument to the command.? Thanks to Alexander Bogomolyn or Alexander
Bogomolny for the permutation algorithm.
ping
The
ping command is like the command line ping command.? The syntax is:
?
ping <IPv4 address>
?
ping <symbolic-reference>
The
idea is to get a rise out of the target computer.? The command indicates any of the following:? 1) response received, 2) response not
received, 3) unable to resolve symbolic name.?
When you give a symbolic name and the name is resolvable, then the
corresponding IP address is shown.
play
The
play command uses your sound card to play an audio file that you name.? This employs Windows?s PlaySound Win32
interface via INTEROP.
pmask
The
pmask command displays the processor (CPU) mask for up to 32 CPUs.
print
The
print command prints the current line and the next n minus one lines that
follow it, where n is the number stated in the command. Example:
PRINT
5
means
print the current line and the 4 lines that follow it.
ps
The
ps command reports the names of existing processes.? Any of these could be terminated using the
kill command.
putquotesaround
The
putquotesaround command revises the lines of the current file so that each line
is quoted (surrounded by double-quotes) and preceded by the characters TAG
followed by a space. Should a line contain a double-quote character,
putting quotes around a quote character would be ambiguous. You can
provide a substitute for such characters as in PQA `. In this example,
the ` character replaces all occurrences of ". The default
substitution is \".
pwoff
The
pwoff command causes the editor to exit without saving the current file and
causes Windows to power off the computer.
randgen
The
randgen command replaces the in-memory text file with a number of random text
lines.? For example, the command? randgen 999? clears the text file and enters
999 lines of random text.
rb
The
rb command causes the editor to exit without saving the current file and causes
Windows to reboot (also known as "restart") the computer.
replicating
The
replicating command is to be used only on Domain Controllers.? It reports the last time various roles were
successfully transferred among domain controllers in a domain.? When replication is not happening, there
exists a task for the System Administrator to attend to.
retype
The
retype command is similar to the insert command except that the line affected
is the current line. The option of the retype command, when present,
specifies the column at which the first character of the argument is to be
placed. For example,
r,11
LMJ
leaves alone the content of columns 1 through 10 and puts
the argument into the line starting at column 11.
reverse
The
reverse command reverses the order of the lines in the file. For example, the
file 1 2 3 becomes 3 2 1. Apply the command twice and 3 2 1 becomes 1 2
3.
ro
The
ro command takes a directory argument and marks as read-only all the files in
the directory (and its directories and their directories). The opposite
operation is handled by the uro command.
runsql
The
runsql command demonstrates how Microsoft SQL Server can be used as a method
sink engine from the text editor.? This
is only a demonstration.
Data Source=(local);User ID=sa;Password=123456
DROP DATABASE MWEDatabase;
NON-QUERY result is -1
CREATE DATABASE MWEDatabase;
NON-QUERY result is -1
USE MWEDatabase;
NON-QUERY result is -1
CREATE TABLE Radios(ID_NO CHAR(12) PRIMARY KEY, BRAND CHAR(12),);
NON-QUERY result is -1
INSERT INTO Radios (ID_NO, BRAND) VALUES ('WHT1521','LG');
NON-QUERY result is 1
SELECT * FROM Radios;
The number of records affected is -1.
Number of columns is 2
(WHT1521? ?) (LG? )
INSERT INTO Radios VALUES ('WHT1522','RCA');
NON-QUERY result is 1
SELECT * FROM Radios;
The number of records affected is -1.
Number of columns is 2
(WHT1521? ?) (LG? )
Number of columns is 2
(WHT1522? ?) (RCA )
UPDATE Radios SET BRAND='GE' WHERE ID_NO='WHT1521';
NON-QUERY result is 1
SELECT * FROM Radios;
The number of records affected is -1.
Number of columns is 2
(WHT1521? ?) (GE? )
Number of columns is 2
(WHT1522? ?) (RCA )
ALTER TABLE Radios DROP COLUMN BRAND;
NON-QUERY result is -1
SELECT * FROM Radios;
The number of records affected is -1.
Number of columns is 1
(WHT1521? ?)
Number of columns is 1
(WHT1522? ?)
ALTER TABLE Radios ADD? MAKER CHAR(12);
NON-QUERY result is -1
UPDATE Radios SET MAKER='GE' WHERE ID_NO='WHT1521';
NON-QUERY result is 1
UPDATE Radios SET MAKER='RCA' WHERE ID_NO='WHT1522';
NON-QUERY result is 1
SELECT * FROM Radios;
The number of records affected is -1.
Number of columns is 2
(WHT1521? ?) (GE? )
Number of columns is 2
(WHT1522? ?) (RCA )
SELECT ID_NO FROM Radios;
The number of records affected is -1.
Number of columns is 1
(WHT1521? ?)
Number of columns is 1
(WHT1522? ?)
SELECT MAKER FROM Radios;
The number of records affected is -1.
Number of columns is 1
(GE?? ?)
Number of columns is 1
(RCA? ?)
CREATE TABLE Orders(OrderID INT PRIMARY KEY, CustomerID INT, QtyPurchased INT, ItemPrice SMALLMONEY);
NON-QUERY result is -1
INSERT INTO Orders VALUES ('1','1','4','2.5000');
NON-QUERY result is 1
INSERT INTO Orders VALUES ('2','2','10','1.2500');
NON-QUERY result is 1
INSERT INTO Orders VALUES ('3','3','12','1.5000');
NON-QUERY result is 1
INSERT INTO Orders VALUES ('4','4','5','4.0000');
NON-QUERY result is 1
SELECT * FROM Orders;
The number of records affected is -1.
Number of columns is 4
(1) (1) (4) (2.5000)
Number of columns is 4
(2) (2) (10) (1.2500)
Number of columns is 4
(3) (3) (12) (1.5000)
Number of columns is 4
(4) (4) (5) (4.0000)
CREATE TABLE Customers (CustomerID INT PRIMARY KEY, FirstName CHAR(12), LastName CHAR(12));
NON-QUERY result is -1
INSERT INTO Customers VALUES ('1','William','Smith');
NON-QUERY result is 1
INSERT INTO Customers VALUES ('2','Natalie','Lopez');
NON-QUERY result is 1
INSERT INTO Customers VALUES ('3','Brenda','Harper');
NON-QUERY result is 1
INSERT INTO Customers VALUES ('4','Adam','Petrie');
NON-QUERY result is 1
SELECT * FROM Customers;
The number of records affected is -1.
Number of columns is 3
(1) (William? ?) (Smith )
Number of columns is 3
(2) (Natalie? ?) (Lopez )
Number of columns is 3
(3) (Brenda?? ?) (Harper? )
Number of columns is 3
(4) (Adam?? ?) (Petrie? )
SELECT * FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
The number of records affected is -1.
Number of columns is 7
(1) (William? ?) (Smith ) (1) (1) (4) (2.5000)
Number of columns is 7
(2) (Natalie? ?) (Lopez ) (2) (2) (10) (1.2500)
Number of columns is 7
(3) (Brenda?? ?) (Harper? ) (3) (3) (12) (1.5000)
Number of columns is 7
(4) (Adam?? ?) (Petrie? ) (4) (4) (5) (4.0000)
SELECT * FROM Orders INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID;
The number of records affected is -1.
Number of columns is 7
(1) (1) (4) (2.5000) (1) (William? ?) (Smith )
Number of columns is 7
(2) (2) (10) (1.2500) (2) (Natalie? ?) (Lopez )
Number of columns is 7
(3) (3) (12) (1.5000) (3) (Brenda?? ?) (Harper? )
Number of columns is 7
(4) (4) (5) (4.0000) (4) (Adam?? ?) (Petrie? )
SELECT *, Orders.QtyPurchased * Orders.ItemPrice AS Line_Item FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
The number of records affected is -1.
Number of columns is 8
(1) (William? ?) (Smith ) (1) (1) (4) (2.5000) (10.0000)
Number of columns is 8
(2) (Natalie? ?) (Lopez ) (2) (2) (10) (1.2500) (12.5000)
Number of columns is 8
(3) (Brenda?? ?) (Harper? ) (3) (3) (12) (1.5000) (18.0000)
Number of columns is 8
(4) (Adam?? ?) (Petrie? ) (4) (4) (5) (4.0000) (20.0000)
SELECT * FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
The number of records affected is -1.
Number of columns is 7
(1) (William? ?) (Smith ) (1) (1) (4) (2.5000)
Number of columns is 7
(2) (Natalie? ?) (Lopez ) (2) (2) (10) (1.2500)
Number of columns is 7
(3) (Brenda?? ?) (Harper? ) (3) (3) (12) (1.5000)
Number of columns is 7
(4) (Adam?? ?) (Petrie? ) (4) (4) (5) (4.0000)
SELECT * FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
The number of records affected is -1.
Number of columns is 7
(1) (William? ?) (Smith ) (1) (1) (4) (2.5000)
Number of columns is 7
(2) (Natalie? ?) (Lopez ) (2) (2) (10) (1.2500)
Number of columns is 7
(3) (Brenda?? ?) (Harper? ) (3) (3) (12) (1.5000)
Number of columns is 7
(4) (Adam?? ?) (Petrie? ) (4) (4) (5) (4.0000)
SELECT * FROM Customers FULL JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
The number of records affected is -1.
Number of columns is 7
(1) (William? ?) (Smith ) (1) (1) (4) (2.5000)
Number of columns is 7
(2) (Natalie? ?) (Lopez ) (2) (2) (10) (1.2500)
Number of columns is 7
(3) (Brenda?? ?) (Harper? ) (3) (3) (12) (1.5000)
Number of columns is 7
(4) (Adam?? ?) (Petrie? ) (4) (4) (5) (4.0000)
scale
The
scale command prints a column scale extending from column 1 through column 80.
select
The select command performs a case-insensitive search of all
the lines in the main memory file and removes all the lines that do not match
the target value.
sizes
The sizes command takes a single argument specification of a
directory (also known as a folder).? The
command reports the number of bytes occupied by the specified directory and all
of its subordinate directories. The editor initially erases the text file and
then reports the byte sizes of the directly subordinate directories, if any.? Similar information is written to a
comma-separated value file named C:\Users\Public\SIZES.CSV.? The size of any directory comprises the sum
of the sizes of all the files in the directory and all the files in all the
subordinate directories direct and indirect.
sort
The sort command reorders the lines in the memory file so
that they appear alphabetically.
superficial
The superficial command works with a directory that contains
several directories that individually contain files (and perhaps no
directories).? Each superficial directory
is listed together with the count of ordinary files that it contains.? The report replaces the in-memory text file.
tab
The
tab command allows you to establish a tab character and several column stops.
This is handy when entering columnar data. For example, if you enter the
command
tab
; 11 21 39
then
enter the command
i
;LMJ;X11,EDIT$;. Open the EDIT$ packet
you
will create a new line with the various segments left-aligned at the indicated
column stops.
td
The
td command displays the date and time last written of the file being edited.
tld
The
tld command creates a shell script for archiving top level directories.? It takes one argument that names the
directory to receive a series of ZIP files produced by PKZIPC.? The data source is the top level directories
of the C:\ drive. Each directory immediately under root is represented by a ZIP
file.? You can individually reconstitute
any of the top level directories.? It is
recommended that there be no overlap between the receiving directory and the
set of directories to be archived. By default the top level directories of the
C:\ drive are obtained.? You can specify
a different drive letter in the command?s option field.? Syntax:?
tld[,<drive-letter>] [<directory-to-receive-ZIP-files>]?
When you do not specify a receiving directory, the default is
C:\Users\Public\Receptacle.
toc
The
toc command erases the current file in memory and creates a new file in memory
that enumerates the directories and files in the named directory.
tokenize
The
tokenize command enters words into the in-memory text
file, one word per line.? The in-memory
text file is the source of the words.? Breaks
between words are signified by characters that are not letters of the alphabet.? Diacritical marks on letters cause breaks in
the initial release of this feature. The one word per line list replaces the
text being edited. You can preserve the input by writing the list.? Use the W command.
top
The
top command sets the current line to zero.
touch
The
touch command updates the time-of-last-write of the argument file to match the
current time. Should the file not exist, it is created with zero content. When
the file has content, it remains unchanged after touch does what it does.
undo
The
undo command, when possible, reverses the effects of the most recent change
command(s) and/or the most recent retype command(s), as is applicable.? For example, you might mistakenly make a
global change that you want to reverse.? Generally,
you can undo everything since the last time you visited the top of the file.? Use the C,S command to see whether undo is
possible.
unique
The
unique command removes duplicate lines.? The
first line in a duplicated set of lines remains in the file.? The rest of the lines are deleted.? Only unique lines remain.
up
The
up command sets the current line to the line immediately above (numbered one
less than) the current line.
uro
The uro command removes the read-only attribute from all the
files in the argument directory (and the directories it contains and the
directories they contain).
vw
The
vw command sets a vertical window in which appears a subset of lines of the
file being edited. If an n-line subset of the file is in the vertical window
then the lines are numbered 1 to n and changes that you may apply affect only
the lines in the window. You set the vertical window by stating the starting
and ending line numbers as in vw 2 4 which saves the entire file to a hidden
location and commences editing of the subset. You merge the subset back into
the main file by entering vw without arguments.
winplaces
The winplaces command displays the folderpaths of all the system special
folders. When a text file is open it is replaced with a report similar to this:
wpt
The wpt command waits for a process to terminate.? Just give the name of the process and wpt
loops until the named process disappears from the system. This is handy when
you are replacing one version of a Windows NT Service with another.? You can uninstall the service and the system
reports the service has been stopped and uninstalled.? But that?s no guarantee that the process has
actually halted.? Enter the wpt command
that happily delays execution of the installation step until the process is
gone.? When you don?t force a delay, it
is quite probable the installer will complain that the uninstalled/stopped
process is still hanging around and therefore your attempt to install will have
terminated in error.
write
The
write command transfers the lines in memory to the named disk file and
terminates the editor.
BigDigitClock displays the current time-of-day.? This seems trivial, but at a radio station,
with three analog clocks, that are supposed to be synchronized with a GPS
time-source, but aren?t, this app fills a void.?
Together with the KeepClockUpdated daemon, BigDigitClock let?s
announcers know when to begin speaking at the start of a live broadcast.
[BigDigitClock-BASIC]
File Integrity Check (FIT)
File Integrity Check compares corresponding files in two different
directories (aka Folders).? The dates,
lengths, and contents are compared.? A
report is made.? You can detect hardware
faults with FIT.? You can detect security
intrusions with FIT.
Cross-Platform File Compressor (CPFC)
CPFC is designed to compress files on a Unisys (Sperry) ClearPath
mainframe and decompress the files on a PC.?
Travel in the opposite direction is also supported.? The sliding dictionary algorithm exploits
redundancies, typical in symbolic data (e.g. ordinary text files), to minimize
the number of bytes that need to be transmitted.? A buffer of a certain size is maintained.? Bytes are entered cyclically in order from
the source file(s) and, initially, there is no compression.? Eventually a redundancy appears. Instead of
literally transmitting uncompressed bytes, a reference to the repeated pattern
(a redundancy) is sent.? Typical
reduction in file size hovers around 50%.?
The mainframe?s 36-bit word, when compared to the PC?s 32-bit word,
means special consideration must be given to guarantee all bits are sent.
Infinite Precision Arithmetic
Sometimes a computer language?s data types are not up to the task.? Suppose you want to compute a very large
integer exactly.? For example, what is 2
to the 1000th power Enter MPA4 (Multiple-Precision Arithmetic
Version 4).? MPA4 carries out integer
addition, subtraction, multiplication, and division, correct to the very last
decimal place.? It computes integer
powers of integers.? It factors integers.? It performs Diffie-Hellman and Mersenne prime
computations.? [MPA4]
By the way, ?is 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376
Suppose your insurance company will dispense a 90-day supply of
medication.? It takes time for a pharmacy
to accept a prescription and deliver the tablets.? If you wait 90 days between doctor visits,
you may have to live without your meds for a few days.? In the case of serious medical conditions,
that could prove to be inconvenient.? Enter
Days Between, a utility program in which you enter two dates, to reveal the
number of days it will take to get you from the first date to the last date.
When your doctor wants you to come back, make it fewer than 90 days from now.? In this example:? 84 days from now.? You get your script and time to have it
filled.? No running out of meds.
[DaysBetween]
File Logger
Windows exposes a method whereby an application is notified in
real-time when files are created, deleted, modified, and renamed.? File Logger displays these notifications in
real-time.? Applications can respond
appropriately beyond simply displaying the notifications.? Refer to FileSystemWatcher in Microsoft?
Windows? documentation.
Sometimes you need to upload a large file.? There may be a limit on the number bytes per
transmission.? Enter Split/Combine, a
utility program that breaks a large file into several contiguous pieces, and
later recombines them. [SpilitCombine]
MERGE finds corresponding files in two directory trees and merges
them into a third directory.
Some files may appear in one directory but not the other.? These are sent to the output directory.? Those files that appear in both directories
are compared to learn which one of the two is the more recent.? The more recent one is sent to the output
directory. When files have identical timestamps, the longer file is copied.?
MERGE is handy when you maintain several separate but related
collections of files, organized into directories and sub-directories.? It sometimes becomes convenient to combine
collections through de-duplication.? For
example, two people can be working on the same application.? Each has his own folder of source code.? When work is done the two efforts can be
merged with Merge.
The Differences Only checkbox causes the (C) file to receive only
those files that are different across the (A) and (B) files.? A file is different if 1) it appears in one
directory but not in the other, or 2) it appears in both directories, but the
timestamps are unequal, or when the timestamps are equal, but the file lengths
are unequal.? When the file lengths are
unequal and the timestamps are equal then the longer file appears in the output.? When the timestamps are unequal then the more
recently modified file appears in the output.?
The directory structure that is common between (A) and (B) is maintained
in (C). [Merge]
CopyMaster
CopyMaster is an app that allows you to duplicate the latest
directory structures and files so they appear on two different computers at the
same time.? This redundancy has two
advantages.? First, there is a current
backup copy of your important files.? Second,
there is convenience in being able to find all your favorite stuff on at least
two different computers. [CopyMaster]
How You Work It
Map the A: drive to \\ComputerOne\C$ and the B: drive
to \\ComputerTwo\C$.? Then launch CopyMaster.? When CopyMaster finishes doing what it does,
you?ll have two computers that sport nearly identical contents (ignoring the
operating system and extra software files).?
You can create a $.txt file in the C:\Users\Public\$$$DeleteMe
directory that instructs CopyMaster to get rid of unwanted directories on both
computers.
Deltree
Suppose you have a directory that contains a florid tree of
sub-directories along with files at many levels and you want to be rid of the
whole mess.
Windows has a rule that says you may not delete a read-only file.? This prevents you from deleting a directory
that contains a read-only file.
Deltree: to the rescue.? Just
point Deltree at the root of the mess and It?s gone in three shakes of a lamb?s
tail.
Now try doing that with the del or erase command in the ordinary
Windows shell.? Oh.? It will do something. But it won?t do what
you want. [deltree]
Copydir
Sometimes you want to copy a directory tree, complete with contents
from directory A to directory B.? This
is, by Microsoft edict, a task for? File
Explorer, ?formerly called? Windows Explorer. ?But what if you want to invoke the function
from the command line? Enter Copydir.? The
syntax is:
copydir A:\A B:\B
Everything subordinate to the A directory is copied subordinate to
the B directory.? Identically-named files
are copied when the file from directory A is newer than or absent from
directory B.? Be aware that the files and
directories inside directory A are created (when necessary) and copied as files
and directories inside directory B.? The
B directory will be created when it does not yet exist.? In other news, proof of function can be had
by using the Ident command.? The
structure of A must be identical to B or else an error message is issued.? The content of files (data NOT metadata) is
physically compared.? [Copydir]
IDENT
Suppose, for example, you have a USB device (an external hard drive,
thumb drive) that you copied to a directory on your computer?s internal hard
drive.? You want to verify that
everything that you copied is present and unmodified.? IDENT is a utility program to perform the
function.? Just launch the application
from the command prompt and name the directory on the USB device and the
corresponding directory on the PC?s hard drive. The contents of each file in
every directory in the directory tree shall be compared and any irregularity
reported.? The two directories must be
absolutely identical.? No check on
various dates and times in the metadata is performed.
Usage:? ident
<directory1> <directory2>
? The two directories must contain only those directories and files
to be compared.
? The contents of corresponding files are checked to determine that
they match.
WavConcatX
WAVConcatX, takes a collection of WAV files and concatenates them.? It optionally inserts an audio separator
between the files.? The output is a
single WAV (audio) file made from the contents of the WAV files in the
aforementioned collection.
The individual WAV files can exhibit varying attributes.? For example, there is the sampling rate, one
channel or two channels, and sample size (8-bit, 16-bit).? You choose the sampling rate and the number
of channels in the output file.? WCX
takes care of the necessary conversions?.?
Sixteen-bit samples are standard in the WCX output file.? Insertion of transitional separators is
possible only when the output sampling rate is 44,100 samples per second, and
there are two channels. [WCX]
?The sample rate conversions are naively done without filtering.? Properly done, a low-pass digital filter is
applied to remove frequencies above half the sampling rate to eliminate
aliasing, which is audible in sampling rate conversions that are produced by
WCX.? If you really want to change the
sample rate, try SoX (Sound Exchange), open-source software on SourceForge.? For example, to change from 44100 samples per
second (or whatever the metadata says it is) to 6000 samples per second, follow
this example:
?
sox? r6000 input.wav output.wav
TFC_File_Inspector came about after
a store employee destroyed a file system on an Apple Macintosh computer.? The remnants of the file system comprised
mainly file content without names or dates.?
So the task for the human is to give names to files that now sport
generic names.? Generic names are
sequential numbers.? These names have
zero mnemonic value. The aforementioned application allows the end user to
cycle through a set of generically-named files, view their contents, and give
them meaningful names. ?One avoids the
laborious process of launching each file and renaming in the conventional
manner.? Ancillary programs named
FILE_MATCHING_PROGRAM, FMP2, AND FMP3 assist in the effort to characterize the
situation that TFC_File_Inspector is meant to correct.? First, hashcodes are developed from the
content of each file on the recovery device.?
Then, hashcodes are developed from the content of each file on an Apple
MacIntosh that contains an old backup of many of the lost files.? We discover that the recovery device contains
many duplicated files.? Since our task is
to give names to the files on the recovery device, we can remove the duplicated
files and reduce our effort.? Then the
hashcodes for files on the recovery device are compared with hashcodes for
files on the Mac.? With this step we
identify further files that already have names and that are situated in a
reasonable directory.? These need not be
renamed.? Our effort is thus further
reduced.
1.? fmp takes a directory and
generates a flat file of hashcodes (full tree).
2.? fmp2 takes two flat files
from fmp called P and G, searches P for identical files in G, and reports them
as CORRESPONDING.
3.? fmp3 takes
CORRESPONDING.TXT and deletes G files that exist in P.
It was discovered that certain older versions of Microsoft Office
products (e.g. Word and Excel) produce what are called Compound Documents.? These objects (files, actually) were
implemented as part of the Component Object Model (COM) effort.? A Compound Document is what is called a
Storage Object.? A Storage Object may
contain metadata that includes such juicy tidbits as Title, Author, and Last
Save Date. The TFC_File_Inspector effort includes implementation of a program
that extracts these metadata and changes generic names to proper names using
tidbits.? This is great when all you got
is file content after your file system gets corrupted.? The Compound Document was abandoned some
years ago in favor of coding the same document data in very, very complex XML.? The XML does not offer the same rich lode of
metadata.
IBMCHECK implements the Luhn Algorithm.? It allows you to enter a credit card number
and be informed whether it is valid.? You
can enter the number as it appears on your credit card, with spaces every four
digits, press a button, and the spaces disappear.? The number is copied to the Windows Clipboard
for pasting into a text box on some retailer?s website.? Retailer websites typically get upset when
you leave the spaces in place. [IBMCHECKCS]
Corrector
of Directory Dates
CORR is the Directory Date Corrector.?
Ideally, Windows would ensure the timestamp applied to every directory
would reflect the contents of each directory.?
The file inside a directory with the latest
last-date/time-of-modification would be honored to have its timestamp applied
to its enclosing directory or directories.?
So that is what CORR does.? Which
directories (now called Folders by marketing) get what timestamps is decided by
tournament rules.? CORR makes it possible
to inspect the folder contents of a folder and decide which folders need
further inspection because of recent updates to the files inside.? Notice that, in the latest release, you can
watch counters advance whilst files and then directories are processed.? [CORR]
As of October, 2020, there is a New! Improved! command line version
of the same application called CORR2.? It
has a better algorithm that makes sure no directory is omitted from processing.? Here is the syntax:
???? corr2
<name-of-directory>
You can run the application against any directory, not just the root
directory of a drive letter.
Keep
Clock Updated
KeepClockUpdated is a service that ensures the system clock stays accurate,
with checks done for accuracy every 5 minutes.?
This entails a time source query every 5 minutes.? In one commercial deployment, at a radio
station, KeepClockUpdated is responsible for setting the clock on 24 different
computers by comparing each computer's clock with a local time source; one that
obtains its very accurate reading from GPS satellites. [This has changed
because the GPS time source permanently malfunctioned.? In place of the GPS time source the service
queries an Internet time source that obtains its responses based on several
other Internet time sources.] (The native Windows time setting mechanism only
checks the computer maybe once per day.? Its
time source is a computer on the Internet.)? All the magic depends on an
understanding of the Network Time Protocol (NTP) that communicates via UDP on
port 123.? You can set the calendar and
time-of-day to an inaccurate value and wait until some multiple of five minutes
past the hour arrives on the clock.? From
the time source, KeepClockUpdated obtains the date and time and compares them
with the computer's own notion of date and time.? When the two are at variance,
KeepClockUpdated changes the computer's clock and calendar to match.? [KeepClockUpdated]
Pip is an application that plays a chime on the hour and a tick on the
half-hour to connote the passage of time.?
In conjunction with KeepClockUpdated, one can be certain the auditory
signals occur at precisely the right moment.?
[PIP]
WINSVCFILCPY is service
app that runs 24/7.? Once a day, at 0300,
it copies key files from their usual staging area to a backup staging area.
This is done in order to mitigate the risk that the usual staging area, a
Microsoft software-based mirrored pair of HDDs, may become useless as a
Microsoft software-based RAID-5 cluster did in September 2013. You can change
the appointed time at which file copy commences by means of a named pipes
client. [WINSVCFILCPY]
FileLogger monitors file
changes.? It displays them as they occur
in real-time.? It keeps a running log of
changes and can copy the log to a file if you choose to do so. [FileLogger]
Password Generator generates random passwords.? They are, by default, a mixture of numerals,
upper- and lower-case letters.? You
specify the length you want up to 40 characters.? You can choose to have only upper-case or
only lower-case letters.? A
non-alphanumeric character can be randomly inserted if you choose to do so.? The generated password is put on the Windows
Clipboard for ease of placement in a textbox on a web page.? These passwords are hard for hackers to guess
and that makes them extraordinarily secure.?
The PRODKEY button causes Password Generator to create a Microsoft-style
Product Key.? [CSPASSGEN]
?
File Mover Service (FMS)
FMS is responsible for
copying TRV files in folders P1 through P9 from the production computer to the
backup computer.? This is in progress all
the time, with throttling imposed to limit impact on an Interactive Voice
Response application, except during the graveyard shift.? However, see note, below, regarding
limitations imposed by an Interactive Voice Response application.? A given file is copied under the condition
that the source file is newer than the destination file or when there is no
destination file.? For example, suppose \\DIALIN1\P1\1547.TRV is to be copied to \\DIALIN2\P1\1547.TRV .? It
follows that copying will occur only when \\DIALIN2\P1\1547.TRV does not already exist and when \\DIALIN2\P1\1547.TRV? time-of-last-write indicates that it is older
than \\DIALIN1\P1\1547.TRV .
You can change the
direction of copying with the application NamedPipesClient.? Simply connect, then type from-1-to-2 or
from-2-to-1 in the Send Message area of the dialog box and press the Send
button.? When you switch the phone lines
from DIALIN1 to DIALIN2 (or the reverse), you should remember to change the
direction of copying.? NamedPipesClient
must be run with elevated privileges. [MWE_FMS]
Individual Computer Housekeeping Service (ICHS)
ICHS is responsible for
performing three functions:
1.
Midnight
Movers
2.
Sunday Movers
3.
Richmond
Download
Midnight Movers happens
at 29 minutes past midnight every night.?
It prepares for the upcoming business day by clearing today?s stories
out of their today?s slots and moving them to yesterday?s slots.
Sunday Movers happens at
28 minutes past one o?clock on Sunday morning.?
It prepares for the upcoming business week by clearing files from their
daily slots and putting them into a weekly backup location.
Richmond Download
implements the File Transfer Protocol so as to acquire copies of files 1501.TRV
through 1505.TRV, which are voice files from the Richmond Times-Dispatch.? This download occurs daily at five minutes
past noon. [MWE_ICHS]
MIDNIGHT MOVERS
WASHINGTON
POST
Original P1??????????????? Daily Copy To?? New P5
1000.TRV-1099.TRV????????????????????????? 1000.TRV-1099.TRV
1100.TRV-1199.TRV????????????????????????? 1100.TRV-1199.TRV
1300.TRV-1399.TRV????????????????????????? 1300.TRV-1399.TRV
1500.TRV-1599.TRV????????????????????????? 1500.TRV-1599.TRV
1700.TRV-1799.TRV????????????????????????? 1700.TRV-1799.TRV
1800.TRV-1899.TRV????????????????????????? ?1800.TRV-1899.TRV
2000.TRV-2099.TRV????????? ??????????????? 2000.TRV-2099.TRV
2100.TRV-2110.TRV????????????????????????? 2100.TRV-2110.TRV
3600.TRV-3620.TRV????????????????????????? 3600.TRV-3620.TRV
3700.TRV-3720.TRV????????????????????????? 3700.TRV-3720.TRV
3900.TRV-3999.TRV????????????????????????? 3900.TRV-3999.TRV
4000.TRV-4099.TRV????????????????????????? 4000.TRV-4099.TRV
4100.TRV-4199.TRV????????????????????????? 4100.TRV-4199.TRV
4500.TRV-4599.TRV????????????????????????? 4500.TRV-4599.TRV
4700.TRV-4799.TRV????????????????????????? 4700.TRV-4799.TRV????
USA
TODAY
Original P6??????????????? Daily
Copy To?? New P6
1000.TRV-1099.TRV????????????????????????? 8400.TRV-8499.TRV
1100.TRV-1199.TRV????????????????????????? 8500.TRV-8599.TRV
3900.TRV-3999.TRV????????????????????????? 8600.TRV-8699.TRV
4000.TRV-4099.TRV????????????????????????? 8700.TRV-8799.TRV
4100.TRV-4199.TRV????????????????????????? 8800.TRV-8899.TRV
1300.TRV-1399.TRV????????????????????????? 8900.TRV-8999.TRV
1600.TRV-1699.TRV????????????????????????? 9000.TRV-9099.TRV
1900.TRV-1999.TRV????????????????????????? 9100.TRV-9199.TRV
1800.TRV-1899.TRV????????????????????????? 9200.TRV-9299.TRV
4500.TRV-4520.TRV????????????????????????? ?9300.TRV-9320.TRV
4600.TRV-4620.TRV????????????????????????? 9400.TRV-9420.TRV
4700.TRV-4720.TRV????????????????????????? 9500.TRV-9520.TRV
5100.TRV-5120.TRV????????????????????????? 9600.TRV-9620.TRV
5200.TRV-5220.TRV????????????????????????? 9700.TRV-9720.TRV
5300.TRV-5320.TRV????????????????????????? 9800.TRV-9820.TRV
SUNDAY MOVERS
Per the script that
formerly was launched on Sundays:
del from P1
4801-4899",
del from P1
9601-9699",
del from P1
9701-9799",
copy p1 2901-2999 to
p1 4801-4899",sb
copy p1 2501-2599 to
p1 9601-9699",sb
copy p1 2401-2499 to
p1 9701-9799",sb
move p1 2901-2999 to
p1 4801-4899",
move p1 2501-2599 to
p1 9601-9699",
move p1 2401-2499 to
p1 9701-9799",
The indicated files
are deleted from the P1 directory, copied from the P1 directory, or relocated
away from the P1 directory, in the indicated order.? The sb notation indicates that copying is
directed to the SundayBackup directory.
SNMP
This picture shows how it
is possible to query the Windows 2012 Operating System for its computer name
(cleverly labeled sysName) using the Simple Network Management Protocol.? The bytes sent and received under the
protocol are anything but simple. But, never mind.? This program untangles the bytes into a
series of nested subordinate messages and picks out the system name which it
displays.? The request for sysName is
encoded by something called an OID.? That?s
the 1.3.6.1.2.1.1.5.0. that you see in the picture.? Object Identifier?? The following is referenced without
permission from http://kb.paessler.com/en/topic/653-how-do-snmp-mibs-and-oids-work.
MIB stands for Management
Information Base and is a collection of information organized hierarchically.
These are accessed using a protocol such as SNMP. There are two types of MIBs:
scalar and tabular. Scalar objects define a single object instance whereas
tabular objects define multiple related object instances grouped in MIB tables.
OIDs or Object
Identifiers uniquely identify managed objects in a MIB hierarchy. This can be
depicted as a tree, the levels of which are assigned by different
organizations. Top level MIB object IDs (OIDs) belong to different standard
organizations. Vendors define private branches including managed objects for
their own products.
SNMP version 1 was the
initial development of the SNMP protocol. A description can be found in Request
for Comments (RFC) 1157 and it functions within the specification of the
Structure of Management Information (SMI). It operates over User Datagram Protocol
(UDP), Internet Protocol (IP), OSI Connectionless Network Services (CLNS),
AppleTalk Datagram Delivery Protocol (DDP), and Novell Internet Packet Exchange
(IPX). SNMP v1 is considered the de facto network management protocol in the
Internet community.
SNMP works on the basis
that network management systems send out a request and the managed devices
return a response. This is implemented using one of four operations: Get,
GetNext, Set, and Trap. SNMP messages consist of a header and a PDU (protocol
data units). The headers consist of the SNMP version number and the community
name. The community name is used as a form of security in SNMP. The PDU depends
on the type of message that is being sent. The Get, GetNext, and Set, as well
as the response PDU, consist of PDU type, Request ID, Error status, Error index
and Object/variable fields. The Trap consists of Enterprise, Agent, Agent
address, Generic trap type, Specific trap code, Timestamp and Object/Value
fields.
MIBs are a collection of
definitions which define the properties of the managed object within the device
to be managed (such as a router, switch, etc.) Each managed device keeps a
database of values for each of the definitions written in the MIB. As such, it
is not actually database but implementation dependent. Each vendor of SNMP
equipment has an exclusive section of the MIB tree structure under their
control.
In order for all of this
to be properly organized, all of the manageable features of all products (from
each vendor) are arranged in this tree. Each 'branch' of this tree has a number
and a name, and the complete path from the top of the tree down to the point of
interest forms the name of that point. This is the OID. Nodes near the top of
the tree are extremely general I nature. For example, to get to the Internet,
one has to reach to the fourth tier. As one moves further down, the names get
more and more specific, until one gets to the bottom, where each node
represents a particular feature on a specific device (or agent).
Simple
Backup/Restore
Simple Backup/Restore
makes a backup file from a collection of directories.? You choose which directories to backup by
specifying a root directory.? The default
root directory (when you do not specify one) is the root of Drive Letter.? The backup file sports the filename extension
.SB.? Each backed up file is internally
associated with its name and its time of last modification, its length, and
unless it is old-format, a CRC.? Data
integrity is assured by a Cyclic Redundancy Check, which is applied on a per
file basis.? Simple Backup/Restore was
developed in response an incident where a commercial file backup app failed
when the computer, which it was backing up, failed catastrophically. The
partially readable backup file had to be recovered through the purchase of
additional commercially available software that was capable of sifting through
a complex, partially corrupted database.?
The central concept of System Backup is simplicity.? A partially completed backup file remains
readable.? All the work completed up to
the point of failure, if any, is fully recoverable without resort to
extraordinary means.? You have the option
to encrypt the backup file.? Restoration
of an encrypted is automatic.? You do not
have to know whether the backup file is encrypted or not. [SystemBackup]
One
text file is created by
SystemBackup for your convenience.
One directory is
created by SystemBackup.
?
C:\Users\Public\HandleTheseFiles.txt
?
C:\Users\Public\MergeRestore?
HandleTheseFiles.txt contains SGSes that
enumerate all the files backed up when you name a filename extension.
MergeRestore contains
the files that are combined during a merge-type
backup.? To start a merge backup:? Press the ?R? button.
The Metropolitan Washington Ear, a radio reading service for the
blind, offers audio streaming via the Internet.?
They moved to their own, dedicated building and infrastructure in 2008.? Their website was not appropriately updated
to cater to different audio streaming software.?
MARK DANA ROCKMAN developed this page to allow listeners to hear the
audio stream.? That formerly was
impossible. [MWE_WEB_CLIENT_FOR_AUDIO]
Nutrients
to Foods (NTF)
Anybody
can look up the nutrients contained within foodstuffs.? But what if you know what nutrients you want
What foods should you eat to get those nutrients The answer is provided by NTF.
[NTF]
SHUTDOWN
There are two version of SHUTDOWN.?
Both of them work.? The second one
fully exercises the Windows API for logging off and for rebooting and powering
off the computer.? [SHUTDOWNCS]
This app is much handier than pointing and clicking around Windows?
own user interface for doing what SHUTDOWN does.? In some contexts there is no obvious way to
cause Windows to reboot.? The 2022
revision includes a combobox.? With the
combobox you can choose the hour at which you want the application to perform
the function.? When you do not specify an
hour then the operation happens immediately. [SHUTDOWNCS]
FileDump
Sometimes you just want to see exactly what a file contains.? [FILEDUMP]
MWE-DIAL-IN-CRASH-MONITOR
?
A computer that runs 24/7 is responsible for an IVR application.? The application maintains a large set of
files inside a directory structure.? There
are two kinds of file:? audio and
database.? Both kinds are possessed by
the IVR application in that they are to be instantaneously available to the IVR
application.? Interference from
applications outside the IVR application is dealt with severely:? the IVR application reboots the computer.? It deals with every anomaly this way.? There is no log entry documenting the fact
that the IVR application has decided to reboot the computer.? We just watch, in horror, as the machine
restarts.? It would be convenient for the
manager in charge of the IVR application to become cognizant of the situation
immediately upon its occurrence.? Enter
MWE-DIAL-IN-CRASH-MONITOR, which pings the computer and plays a tune in the
event of no response.
Numerous reboots over the years have been described as being due to
interference from applications that are outside the purview of the IVR
application.? Somebody? locked? the file.? That is to say, some application has opened
the file so it can be backed up for good and proper administrative reasons.
Other potential problems revolve around file metadata such as who owns the
file, whether the file is compressed, whether the file is read-only, whether
the file has other strange attributes like SYSTEM and HIDDEN.? Folklore tells us the IVR application is
quite strict as to what attributes a file may be blessed with.? These, we learn, are N (the attribute a file
gets when it has no other attributes) and A (the attribute a file gets when it
is ripe for being backed up).? All others
are forbidden.? When the IVR application
finds a tainted file, it reboots the computer.
Folklore isn?t necessarily an accurate reflection of reality.? In actual fact, the IVR application probably
reboots the computer only in the event of a file access conflict and for
reasons that have nothing whatever to do with the file system, its behavior and
contents.? [MWE-DIAL-IN-CRASH-MONITOR]
TRT32 FILE REPAIR aims to change file metadata to conform to the IVR
application?s strict attributes rules.? [MWE_TRT32_FILE_REPAIR]
UPLOADY
This ASP.NET application allows a web client to upload a file to the
ISP that hosts www.mdrsesco.biz, the website.? The interesting thing about this application
is its inability to spend the time or bandwidth on uploading large files.? Supposedly the problem is mitigated with
adjustments to parameters contained within Web.config, a text file Microsoft?s
web server, IIS, uses to make decisions about how a round trip is to be handled.? Yeah, those adjustments don?t do the trick.? However, for small files, this? app? is quite satisfactory.? FTP is the workaround for large files.
<?xml version="1.0"?>
<configuration>
??????? <appSettings/>
??????? <connectionStrings/>
??????? <system.web>
??????????????? <httpRuntime
maxRequestLength="409600" executionTimeout="86399"/>
??????????????? <sessionState
timeout="500100"/>
??????????????? <!--
? Set compilation debug="true" to
insert debugging
? symbols into the compiled page. Because
this
? affects performance, set this value to true
only
? during development.
? -->
??????????????? <compilation
debug="false" targetFramework="4.0">
??????????????? </compilation>
??????????????? <!--
? The <authentication> section enables
configuration
? of the security authentication mode used by
? ASP.NET to identify an incoming user.
? -->
??????????????? <authentication
mode="Windows"/>
??????????????? <!--
? The <customErrors> section enables
configuration
? of what to do if/when an unhandled error
occurs
? during the execution of a request.
Specifically,
? it enables developers to configure html
error pages
? to be displayed in place of a error stack
trace.
? <customErrors
mode="RemoteOnly"
defaultRedirect="GenericErrorPage.htm">
? <error statusCode="403"
redirect="NoAccess.htm" />
? <error statusCode="404"
redirect="FileNotFound.htm" />
? </customErrors>
? -->
??????????????? <pages
controlRenderingCompatibilityVersion="3.5"
clientIDMode="AutoID"/></system.web>
??????? <!--
? The system.webServer section is required
for running ASP.NET AJAX under Internet
? Information Services 7.0.? It is not necessary for previous version of
IIS.
? -->
</configuration>
DMP
In a previous life, MARK DANA ROCKMAN worked on mainframes.? He created DMP for the Unisys (Sperry)
mainframe, which is now known as Unisys ClearPath but previously was known as
the Univac 1100/2200 Series.? DMP
persists and Les Leist, with whom the aforementioned Rockman once worked, has
kindly decided to maintain it and distribute it to those who want it.
http://cgibin.rcn.com/leistlc/cgi-bin/indexbld.pl
DMP 22R2F - Interactive, Multi-Functional Utility Processor .....[06
NOV 2013 (1405 KB) -- Downloads: 878]
DMP is a versatile program with numerous commands relating to system,
MCT, and directory information; and utility functions for files and tapes. This
version has been upgraded for the latest MCT, MFD, and Audit Trail structures.
*** Although DMP has commands that work with @COPY,G tapes, DMP does
not support the newer @COPY,G format with more than one track per block. There
is also limited LPF and LEPF support. See DMP/README. ***
-- Written by Mark Rockman. Enhanced by Les Leist.
(DOC no longer posted; obtain from download.)
How
to Kill a Process
Your application craves to terminate another process.? Here is how to do it.
namespace
EditTechnology
{
? public class kill
? {
? public static bool WasteHim(String
whomToWaste) // true indicates the process was found
and kill was called on it
? {
? string whomWeGonnaWaste = whomToWaste;
? System.Diagnostics.Process[] localAll = System.Diagnostics.Process.GetProcesses();
? foreach (System.Diagnostics.Process
p in localAll)
? {
? if (p.ProcessName.Equals(whomWeGonnaWaste))
? {
?
p.Kill();
?? ?return true;
? }
? }
? return false;? // process by the specified name was NOT found
? }
? }
}
Notice that what is going on here is enumeration of all the processes
in the system.? One of those may have a
name that matches the argument.? It is
the one, if such exists, that gets the axe.
How
to Launch a Process
class Launch
? {
? public bool
Process(string nameOfFile)
? {
?
System.Diagnostics.Process myProcess = new
System.Diagnostics.Process();
? try
? {
? // Get the path that stores user documents.
? string myProgramFilesPath
=
?
Environment.GetFolderPath(System.Environment.SpecialFolder.System);
?
myProcess.StartInfo.FileName = myProgramFilesPath + "\\NOTEPAD.EXE";
?
myProcess.StartInfo.Arguments = nameOfFile;
?? ?myProcess.StartInfo.Verb = "Open";
?
myProcess.StartInfo.CreateNoWindow = true;
?
myProcess.Start();
? }
? catch
? {
? return false;
? }
? return true;
?? ?}
? }
How
to Launch a Process and Gather Its STDOUT
This shows how to launch a console program (a
program that can be found among the directories that are listed in the PATH
environment variable of the logged-in user?s profile) and have its output sent
to a string variable.? The lines of
output are separated by carriage returns and/or line feeds.
How
to Determine If a File is Already Open in Another Process
How
to Disable the Dismiss Button
You
Know.? The X in the Rectangle in the
Upper Right of a Window
In a Windows Forms application it is possible to disable the dismiss
button.? You must override an
event-handling method of the form class and set a flag that tells the
powers-that-be that you find it utterly inconvenient to terminate the program
at this time.? Probably it would formally
be better if you coded a base.OnClosing() method invocation for the case where
bWorkerRunning is false.? But it seems
that?s not really necessary.? Setting
Cancel in eventargs to true does the trick.
Interoperability:? Hooking Managed Code to Unmanaged Code
Managed code is produced by Visual Studio for consumption at runtime
by a Just-In-Time (JIT) compiler.? The
JIT Compiler transforms Intermediate Language (IL) to machine code and performs
runtime checks for type safeness and validity to ensure proper operation and
security.? IL is code written for a
machine that hasn?t been realized in hardware but is code that can readily be
transformed to machine code.? Code that
is written in languages such as C# and Visual Basic becomes IL before it
becomes machine code.
Interoperability (INTEROP) is the mechanism that enables the methods
in managed code to call the methods in unmanaged code.?
Unmanaged code is produced by Visual Studio for languages like C++.? This is direct-to-machine-code compiling.? The only validity checks are the ones that
are performed during compilation.? C++
programs are ready to load and execute.? There
is no JIT compiling.? There is a
variation of C++ that can be compiled to IL and which uses the Common Language
Runtime of the .Net Framework, the same as C#.?
Why use unmanaged code It is because a C++ program is the place where
you have access to the entirety of the Win32 API.? Many operating system features are virtually
inaccessible from managed code. There is no support in CLR, for example, that
lets a programmer instruct the operating system to reboot itself.? Named pipes There is nothing in CLR for those.? But Win32 and INTEROP provide the solution.? In the case of named pipes, there is no need
for a DLL.? INTEROP takes care of the
whole problem.
Consider the case where a Win32 method must be invoked in order to
complete the requirements of a C# application program.? The Windows API,
informally WinAPI, is Microsoft's core set of application programming
interfaces (APIs) available in the Microsoft Windows operating systems. The
name Windows API collectively refers to a number of different platform
implementations that are often referred to by their own names (for example,
Win32 API).
INTEROP entails marshaling of arguments and of a return value.? A programmer writes the Win32 method in C++,
compiles it into a Dynamic Link Library with a specific release of Visual
Studio, and chooses whether the DLL is targeted for a 32-bit or a 64-bit
environment.? Another programmer writes
C# code that calls the Win32 method.? In
C# the programmer must declare the external method and decorate the declaration
which names the containing DLL and its location in the file system.? When deploying the solution, the end user
must be provided with the C# executable (the .EXE file), the C++ dynamic link
library (the .DLL file), and instructions on which Visual C++ Redistributable
Library must be installed to make a home convivial to INTEROP and Win32
executable code.?
The made-up term bitness refers to machine and operating system
architecture: 32-bit or 64-bit.? The
Intel 80386 and follow-on products are 32-bit platforms.? Advanced Micro Devices invented what became
the industry standard 64-bit architecture, well after Intel?s introduction of
its proprietary 64-bit Intel Itanium Architecture.? See http://en.wikipedia.org/wiki/IA-64. Intel
now also manufactures in accord with the Advanced Micro Devices? design.? When 64-bit is referenced, the architecture
that springs to mind is the AMD one, not the Intel one; although they persist
and co-exist.? Windows operating system
SKUs come in 32-bit and 64-bit flavors.? Either
of these can be installed on 64-bit hardware platforms.? On 32-bit hardware platforms only 32-bit
Windows can be installed.? Visual C++
Redistributable Library comes in 32-bit and 64-bit flavors.? (The 64-bit flavor can be used only on
computers that are running a 64-bit version of Windows.)? There are several
versions of Visual C++ Redistributable Library that are individually associated
with specific Visual Studio releases.? The
Visual Studio release is the one that is used to compile the unmanaged code.? Some combination of Visual Studio release,
Visual C++ Redistributable Library, 32-bit/64-bit compilation choice, hardware
platform bitness, and operating system bitness can be found that will support
successful INTEROP calls.
? catch (Exception emode)? //? An attempt was made to load a
program with an incorrect format. (Exception from HRESULT: 0x8007000b)
?//? On January 20, 2015, it was discovered that the
ONLY problem was that the default 32-bit DLL was the "incorrect
format."? The system demands a 64-bit DLL.?
For the latest revisions to Windows Server (starting with Windows
Server 2012), the required runtime libraries are termed? features? of the operating system.? You should install runtime libraries via
Server Manager?s Install Feature function.
Here is how C# is used to declare an external C++ method for calling
via INTEROP.
Notice this declaration not only declares the name, arguments, and
return type of the method, but it also declares the file system location of the
containing Dynamic Link Library.
Here is how C# calls the unmanaged method.? The declaration makes this syntactically and
semantically legal.
Finally, here is the unmanaged C++ code that could, if it wanted to,
call any of the various Win32 methods.
Here is a real-world C++ method that allows a C# application to
reboot the computer.
Factors
1.
The bitness of the hardware.
2.
The bitness of the operating system.
3.
The bitness of the compiled DLL.
4.
The version of Visual Studio that is used to compile the DLL.
5.
The version of the Visual C++ runtime redistributable library.
http://msdn.microsoft.com/en-us/library/ms235636(v=vs.100).aspx
https://msdn.microsoft.com/en-us/library/ms973190.aspx
MS973190 is a document
that claims Visual Studio C#, which generates managed code, can be told to
target 32-bit systems or 64-bit systems.?
On a 64-bit system the Just-In-Time compiler will produce 64-bit code if
that is targeted or 32-bit code if that is targeted.? Windows-on-Windows (WoW64) takes care of
non-native cases.? So sometimes your
managed code wants a 64-bit DLL for its unmanaged code.? Sometimes it wants the 32-bit DLL.? It?s may be (no guarantee) just a matter of
the highly obscure configuration settings in your Visual Studio build.
How
to Create a Dynamic Link Library in Visual Studio 2010
To
create a new dynamic link library (DLL) project
1. On the menu bar, choose File,
New, Project.
2. In the left pane of the New
Project dialog box, expand Installed Templates, Visual C++, and then select
Win32.
3. In the center pane, select Win32
Console Application.
4. Specify a name for the
project?for example, MathFuncsDll?in the Name box. Specify a name for the
solution?for example, DynamicLibrary?in the Solution Name box. Choose the OK
button.
5. On the Overview page of the Win32
Application Wizard dialog box, choose the Next button.
6. On the Application Settings page,
under Application type, select DLL.
7. Choose the Finish button to
create the project.
The
Care and Feeding of Named Pipes in Services
In
computing, a named pipe (also known as a FIFO for its behavior) is an extension
to the traditional pipe concept on Unix and Unix-like systems, and is one of
the methods of inter-process communication (IPC). The concept is also found in
OS/2 and Microsoft Windows, although the semantics differ substantially. A
traditional pipe is "unnamed" because it exists anonymously and
persists only for as long as the process is running. A named pipe is
system-persistent and exists beyond the life of the process and can be deleted
once it is no longer being used. Processes generally attach to the named pipes
(usually appearing as a file) to perform inter-process communication.? http://en.wikipedia.org/wiki/Named_pipe
A
named pipe is a message conduit.? It
bi-directionally conducts messages between processes.? Program A and Program B can connect to a
named pipe and send messages to each other without involving rotating magnetic
memory devices.? All the magic happens in
software and in main memory.
Named
pipes are especially handy when it becomes necessary to communicate with
daemons, also-known-as Windows NT Services.?
The term daemon is popular in Unix and is almost unknown in Windows, but
the concept is the same.? A daemon is a
program that generally starts automatically after a reboot and runs constantly.? It runs independently of a shell or graphical
user interface, which makes it hard to communicate with them.? Enter named pipes.? With named pipes, an application that
possesses a user interface is able to send and receive messages to and from a
daemon.
The
daemon implements a named pipes Server that is constantly watchful for Clients
that wish to connect to the Server.? Independent
Client sessions are thereby established and lines of communication opened.
/*
?*
The Server
?*
?*
The purpose of The Server is to maintain and service a collection of clients
who connect via a mechanism known as Named Pipes.
?*
There is no .NET API for Named Pipes.? So
The Server uses System.Runtime.InteropServices to call the necessary Win32
APIs.
?*
Fortunately, the APIs are not too complicated nor demanding.? The Named Pipes methods are CreateNamedPipe
and ConnectNamedPipe.
?*
These are defined by the Windows Dynamic Link Library file kernel32.dll.? The trick is in parameterizing the calls
correctly.
?*
Named Pipes is the perfect mechanism for communicating with a Windows Service.? A Windows Service is a process that Windows
?*
starts at boot time.? There is no
conventional user interface.? For
example, a Windows Service has no shell and no GUI.
?*
?*
The Server maintains a non-generic List (a collection) of Client objects.? The Client object is a non-behaving structure
that
?*
represents an individual connected client by Named Pipes handle and Filestream,
if any.
?*
?*
The Server sends messages to users via an event mechanism.? Users register a method that is called when
?*
The Server sends a message that it has received from a client.?
?*
?*
Users of The Server are able to send messages.?
When this happens, each of the connected clients is destined to receive
the message.
?*
Said users send messages to The Server via the SendMessage() method of The
Server.
?*
?*
The Start() method of The Server gets things going by forking a thread to field
messages that clients send to The Server.
?*
The aforementioned thread is called The Listener because it "listens"
for clients to "speak."? The Listener is a
?*
perpetual loop that exits only when a Named Pipes error occurs or because
somebody calls the Stop() method of The Server.
?*
On each pass of the loop The Server calls CreateNamedPipe to obtain what is
called a Client Handle.? This call blocks
?*
until a client connects or until Named Pipes (the complex of software) decides
that blocking forever would be futile.
?*
For example, the process may be exiting.?
In that case, CreateNamedPipe returns an invalid handle, which is
detected and
?*
handled by The Server by terminating The Listener thread.? Normally, CreateNamedPipe returns a valid
handle and this
?*
represents a connecting client that usually may be found running in a separate
process.? The method ConnectNamedPipe is
?*
called to complete the connection between client and server.? Should this error, The Server terminates The
Listener.
?*
In the usual case of "no error," The Server creates a new Client
object and puts the handle in it.? Then
The Server
?*
locks the client list and adds the Client object to it in one atomic action.? Finally, The Server forks a thread to handle
?*
the arrival of messages from the client.?
The Reader (as represented by the Read() method of The Server) is passed
a
?*
reference to the aforementioned Client object.
?*
?*
The Read() method of The Server creates a FileStream object based on the handle
in the Client object that The Listener passes.
?*
Then The Reader enters a perpetual loop that terminates upon the occurrence of
an error condition or the Stop() method is called.
?*
A reference to the FileStream is put in the Client object next to the handle
and the FileStream Read() method is called.
?*
This call blocks until a message arrives or an error condition arises.? A zero length message is an error condition
that may
?*
occur after the client disconnects. In the normal case, bytes arrive and must
be dispatched via an event to the user of
?*
The Server. The bytes are first converted to a string.? In the error case, the handle is closed, the
stream is closed,
?*
and the client object is removed under lock from the client list.? The Reader thread is then terminated.
?*
?*
The user of The Server is responsible to provide the name for a Named Pipe that
matches the name that clients will use.
?*
For example, if X is a reference to The Server object then X.PipeName can
appear to the left of the assignment operator to
?*
receive a string of the form \\.\pipe\<name-of-pipe>.? The user then must register a method to
handle message arrival events.
?*
As before, X is a reference to The Server object.? So X.MessageReceived can appear to the left
of the delegate add operator.
?*
The assignment is of a delegate instance that points to a method that shall be
invoked by The Server when a message arrives.
?*
The method receives two arguments in the following order:? 1) a reference to the client object, and 2)
the message as a string.
?*
?*
The user of The Server is in full control of the life of The Server.? Life begins with initialization and Start()
and ends
?*
with Stop().
?*
*/
The following exhibit shows the user interface to a generic Named Pipes
Client.? The dropdown list shows all the
available servers.? The user first gets
the app to enter privileged mode via a button that is labeled? Award Privil? and that has vanished because
it has already been applied.? This causes
the Client run as Administrator.? Administrator
is a privileged mode in which it is permitted to open a named pipe as a stream,
send and receive messages via named pipes.?
The user enters a command in the Send Message area and presses the Send
button.? The command is transmitted to
the server indicated by the dropdown box.?
The response is shown in the Rich Textbox under Received Messages.? In this example, the WINSVCFILCPY service
responds with its status.? The user,
having read the command response, can clear the Received Messages box and send
another command.
Solving
Mysterious System Crashes
Suppose your
computer performs some vital function and it reboots during peak usage periods
for unknown reasons.? You?d like to know
why, wouldn?t you Enter the system dump and dump analyzer.? To enable Windows to take a dump you must
configure Windows to do so.? Ideally you
will collect as much data possible in order to allow the dump analyzer the
greatest opportunity to spell it out for you.?
Microsoft provides some guidance on how to size the page file since that
file receives the memory dump during the crash.?
See https://support.microsoft.com/kb/2860880
According to that
document you should configure the page file by following to the formula A+B,
where A is the amount of main memory in the computer?s hardware and B is
257,000,000 bytes.? B is space required
to accommodate symbol tables and headers for the various portions of the dump.? Ideally your computer will take a full system
dump when a crash occurs.? The other
options are? no dump at all, ?and? a
minidump.
If your system is
crashing and you cannot find a dump file (filename extension .dmp) then likely
your page file is too small.? On a
Windows XP machine with 2GB of main memory 4GB (the maximum allowed) of page
file should be plenty.
Usually that
which causes system crashes is third-party device drivers that contain faults
and issues.? Imagine a linked list that
contains an invalid address in one of its pointers.
Microsoft
provides WinDbg, a dump analyzer.? There
is a commercial product known as WhoCrashed that also provides dump analysis,
perhaps in a manner accessible to mere mortals.?
Visit their website at http://www.resplendence.com/whocrashed
Latest version:
5.03
WhoCrashed
reveals the drivers responsible for crashing your computer
Whenever a
computer running Windows suddenly reboots without displaying any notice or blue
screen of death, the first thing that is often thought about is a hardware
failure. In reality, most crashes are caused by malfunctioning device drivers
and kernel modules. In case of a kernel error, most computers running Windows
do not show a blue screen unless they are configured to do so. Instead these
systems suddenly reboot without any notice.
WhoCrashed shows
the drivers that have been crashing your computer with a single click. In most
cases it can pinpoint the offending drivers that have been causing misery on
your computer system in the past. It does post-mortem crashdump analysis and
presents all gathered information in a comprehensible way.
Normally,
debugging skills and a set of debugging tools are required to do post-mortem
crash dump analysis. By using this utility you do not need any debugging skills
to be able to find out what drivers are causing trouble to your computer.
MARK DANA ROCKMAN
offers no endorsement of this product and is in no way liable for problems you
may have using it, if any.
If you want to
cause a Blue Screen of Death in order to obtain a dump, launch the following
text file that I?ve named bsod.reg.? Apply
this registry change.? Then reboot the
computer.? Then logon.? Then hold down the rightmost CTRL key and
simultaneously hold down the SCROLL LOCK key.?
You can uncheck the automatic reboot box in Advanced settings under My
Computer Properties to prevent a reboot following a Windows fault (i.e. BSOD).? The reboot will still happen when a program
you are running decides to solve the world?s problems with a reboot.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters]
"WorkNicely"=dword:00000000
"CrashOnCtrlScroll"=dword:00000001
Core Dump in Windows?
Back in the day, a
failing computer program would leave behind pages and pages of numbers called a
core dump.? It was just a memory picture
which, along with register contents, could be used, occasionally, to discern
why a program failed.? Such a thing is
rarely used these days what with Integrated Debugging Environments (IDEs) that
allow you to step through problematic code and fix it all in one go.? However, it is nice to know that Windows
admits the possibility that you want to take a core dump.? Here?s how you do it.? Assuming the failed program is still in
memory (it may be displaying an error message), find it in Task Manager, right
click the item, click Create Dump File.? Et,
voil?.? You?ve got yourself a minidump in
the %TEMP% directory.? You can then
launch Visual Studio and drag the minidump?s icon to Visual Studio?s window in
order to visualize the dump.
WinDbg
WinDbg is good for many
things.? Among those things is using it
as a dump analyzer for when you are able to cajole Windows into producing a
dump file such as MEMORY.DMP.? You get a
switch to throw that picks the kind of dump to be produced.? You get a number to specify that establishes
the size of the Windows Page File.? To
produce a full memory dump after an unfortunate computing event (i.e. a crash),
the page file will have to be larger than the number of bytes that physical
memory will hold.? Naturally, a memory
dump has metadata alongside a clump of bytes.?
If you have 2GB of physical main memory then 4GB of page file should be
more than adequate.? You can leave page
size management up to Windows to perform, but the question remains whether
Windows is up to the task, especially when the object of the game to is to
guarantee that a panic dump is available in the event of a crash.
In
order for dump analysis to work correctly, WinDbg requires the symbol table
that is created by Microsoft when it does the RTM build of Windows.? You require a specific symbol table for the
specific Windows build that produced the dump.
Naturally,
this issue progresses to questions such as 1) Where do I get WinDbg and 2)
Where do I get the symbol table Also, if I get the symbol table, where does the
symbol table get put by the symbol table installer The installer makes a
Federal case out of copying a file, a set of files, and/or database and
neglects to mention where it is located.?
_NT_SYMBOL_PATH is an
environment variable (you may want to create it) that translates to a string
that names the location of the symbol table if you knew where that might be.
It can be reliably
reported that WinDbg comes with the Windows Driver Kit, which you can download
at no cost to you.? And symbols are
readily available at
?http://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx#_System_Requirements
Download Windows Symbol
Packages
C:\Symbols
According to PROCMON, a
delightful tattletale, the place where the symbols installer puts all those PDB
files is C:\Symbols.? So you should go to
Advanced Settings and equate _NT_SYMBOL_PATH to C:\Symbols.
You might also try
setting _NT_SYMBOL_PATH to the following
srv*DownstreamStore*http://msdl.microsoft.com/download/symbols
This last one
takes the prize cake.? It turns out that
symbol tables for the exact build you are running are almost impossible to find.? To fix that little conundrum there exists a
way for your favorite debugger (I love WinDbg) to satiate its craving for
symbol tables by drinking from the online fountain in The Cloud.? That? DownStreamStore,
?above That?s The Cloud.? So my recommendation is that you set
_NT_SYMBOL_PATH to the aforementioned value.?
You get far less complaint from WinDbg about undefined symbols.
Process
Monitor and WireShark
Process Monitor,
by Mark Russinovich and Bryce Cogswell.? http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
This splendid? app? displays and preserves a comprehensive
record of actions internal to Windows.? For
example, you can watch various processes open and close files, attempt to
communicate on the Ethernet, and play around with The Registry. When the system
is complaining about odd things, Process Monitor steps in to explain.? If you don?t find Process Monitor does enough
to satisfy your need for Ethernet monitoring, I suggest you use WireShark: https://www.wireshark.org/download.html
Process Monitor
is an advanced monitoring tool for Windows that shows real-time file system,
Registry and process/thread activity. It combines the features of two legacy
Sysinternals utilities, Filemon and Regmon, and adds an extensive list of
enhancements including rich and non-destructive filtering, comprehensive event
properties such session IDs and user names, reliable process information, full
thread stacks with integrated symbol support for each operation, simultaneous
logging to a file, and much more. Its uniquely powerful features will make
Process Monitor a core utility in your system troubleshooting and malware
hunting toolkit.
These tools are
free of any charge.? And very, very
useful.
Do
Not Block the Message Pump
The message pump
drives the? app. Without messages
flowing, the program stops behaving.? That
is to say, there is no behavior.? You,
the end user, see a Not Responding message.?
That means the? app? is not processing
what may well be a lengthy queue of messages.?
That?s because the? app? is busy
doing things other than processing messages.?
Solution While you think the purpose of your program is to solve a
business problem, Windows knows better.? The
real purpose of your program is to process messages.? So you must create a thread to handle the
business problem.? The initial thread
thus is dedicated to handling messages.
Once you have a
thread dedicated to the business problem, the original thread takes care of
message handling.? The two threads must
coordinate to avoid strange occurrences such as happens when you click the X in
the upper right-hand corner of the Windows Form.? The window closes, yet the business problem
solving continues invisibly.? To avoid
this happening, you can override the Windows Form method that receives control
in the event that the aforementioned X is clicked.? You can set a flag to tell program management
to ignore the close request for the time being.?
Once the business solver finishes its task, you can reverse the close
inhibit.? Here?s the code:
?protected override void
OnClosing(CancelEventArgs eventargs)? // the X icon in the upper right corner
of the dialog box is made inoperable when a worker is working
? {
? if (bWorkerRunning)? ?// if a worker thread exists
? eventargs.Cancel = true;? // then ignore
the close request
?? ?else
? {
? eventargs.Cancel = false;
? base.OnClosing(eventargs);
? }
?return;
? }
Configure
Domain Name Service (DNS)
From
time to time, one is required to create a Domain Controller.? Many Domain Controllers are Domain Name
Servers (DNS).? A DNS is responsible for
transforming a symbolic Internet or LAN reference to an IP address.? The necessary steps are few and simple and
yet the written material is long, complicated, and jargon-laden.? If you get it wrong, your DNS will be
resolving symbolic references via the wrong servers out on the Internet.? That?s slow, inefficient, and, in egregious
cases, illegal.
Modern
Windows Server operating systems offers DNS that is integrated with Active
Directory (AD).? That means when you have
multiple domain controllers (in the same domain), that DNS is replicated across
all of the Domain Controllers.? AD is a
database that facilitates coordination between Domain Controllers and allows
workstations to become? members? of the
domains that Domain Controllers are responsible for protecting and serving.? A hugely important offering of Domain
Controllers (DC) is Group Policy.? Group
Policy, it need be pointed out, is not Policy that applies to Groups.? Rather, it is a grouping of policies.? The big deal about Group Policy is that is
implements the means to set policy for member workstations from a central
location.? The central location is the
Domain Controller.? You insist, for
example, that your workstation users employ complex passwords that expire every
month Bingo!? No problem.? Just set a policy that says so.
https://support.microsoft.com/kb/172963/EN-US
is a document that explains how you configure a DNS.? It is very good, but incomplete.? It will get you going with name resolution on
your LAN.? That way, computers on your
LAN can find each other.? Symbolically.? If your domain does not extend beyond your
LAN, you establish an arbitrary domain name such as mdrsesco.com.? All of your member workstations will be? joined to the domain? and named
<name-of-computer>.<domain-name>.?
For example, P30.mdrsesco.com.?
The
following instructions apply to Windows Server 2012 R2.? Previous incarnations of Windows Server
sported a DNS configuration utility that was not integrated within Server
Manager.? Nowadays one must start Server
Manager and navigate its user interface to perform any administrative function.? To get started, the DNS role must be
configured.? Launch Windows Server (it
usually launches by itself when you restart the server).Click Manage > Add
Roles and Features > Role-based or Feature-based Installation > Select a
server from the pool > Server roles > DNS Server.? You just tick the checkbox next to DNS Server
and follow the instructions that start the installation of the DNS role.? Once that is done, you are ready to configure
DNS.? To do that, go back to Server
Manger.? Click Tools > DNS.? By clicking DNS you cause to launch what is
called DNS Manager.? That is your window
onto the world of the Domain Name Service.
Notice
the menu across the top of DNS Manager.? One
of the menu items is Action.? Click
Action > Configure a DNS Server.? This
launches a? wizard? that guides you
through the process of creating the DNS configuration. You choose to configure
a) a Forward Lookup Zone, b) both Forward and Reverse Lookup Zones, c) Neither
Forward Nor Reverse Lookup Zone.? Item c)
is a bad choice because all name resolution is then done via top-level domain
(TLD) name servers and those servers are not designed to nor capable of being
Mister Answerman for every workstation in the Universe.? You want at least a Forward Lookup Zone and
preferably Forward and Reverse.? Press
the radio button that applies in your case. Do you want to create a Forward
Lookup Zone now Answer yes.? Do you want
a Primary Zone A Secondary Zone A Stub Zone Pick Primary.? Tick the Store the Zone in Active Directory
checkbox.? Select how you want Zone Data
replicated.? You want it replicated far
and wide.? Throughout the domain or
throughout the forest of domains. I suggest To all DNS Servers throughout the
domain.? Now you get to pick your Zone
Name.? In my case the Zone Name is
mdrsesco.com.? Now you get to choose
whether Dynamic Updates are to occur.? It?s
a convenience feature.? When a new
workstation appears on the LAN and points to the DC/DNS, the DNS recognizes the
need to list the workstation so that other workstations on the LAN can
communicate with it.? Failing to allow
Dynamic Updates means you will be required to manually configure each
workstation.? I suggest that you chose to
have DNS perform Dynamic Updates. These can be Secure or Not Secure.? Since your DNS database is integrated within
AD, you want secure updates.? Now you
want to create a Reverse Lookup Zone.? Such
a Zone provides the capability to take an IP address and map it to a
corresponding symbolic name.? Given 192.168.1.4
you may get, for example, P30.mdrsesco.com.?
Do you want a Primary Zone A Secondary Zone A Stub Zone Pick Primary.? Tick the Store the Zone in Active Directory
checkbox.? To All DNS Servers throughout
the domain. Next, do you want to resolve IPv6 addresses Certainly not.? Not on a LAN.?
Choose IPv4.? Next, enter the
Network ID that applies to your domain.? Suppose
all of the computers on your LAN sport an IP address of the form 192.168.1.x,
where x varies according to which computer you are considering and is unique to
that computer out of all the computers on the? LAN.? The network portion of the IP address is
192.168.1.? So enter that as your Network
ID.? This assumes your subnet mask is
255.255.255.0.? Do you want Dynamic
Updates Yes.? Should this DNS Server
forward queries Of course it should. Choose the radio button next to that
option and enter the IP addresses (or the equivalent symbolic names) of the
Domain Name Servers out on the Internet that your Internet Service Provider has
kindly documented for you.? Congratulations!? You are done.
When
you need to alter the list of Forwarders, go to the Menu and click Action >
Properties.? See the tab-laden dialog box.? Choose the Forwarders tab, click Edit and
enter the IP address or symbolic names of the forwarders. Then click OK.? See
http://technet.microsoft.com/en-us/library/cc754941.aspx.
I
find it comforting to know that DNS is successfully contacting the Forwarders,
so I use a packet sniffer as I enter a bogus URL in my favorite browser.? Yes, indeed.?
The DNS is contacting the Forwarders.?
Done and done.
rem
https://technet.microsoft.com/en-us/library/cc754941.aspx
rem Run this as
Administrator (i.e. elevated privileges)
dnscmd
/ResetForwarders /help
dnscmd
fserv.mdrsesco.com /ResetForwarders 199.45.32.43 199.45.32.38 /TimeOut 5
REM
REM
REM
REM
REM In future versions
of Windows, Microsoft might remove dnscmd.exe.
REM
REM If you currently
use dnscmd.exe to configure and manage the DNS server,
REM Microsoft
recommends that you transition to Windows PowerShell.
REM
REM To view a list of
commands for DNS server management, type
REM "Get-Command
-Module DnsServer" at the Windows PowerShell prompt. Additional
REM information about
Windows PowerShell commands for DNS is available at
REM
http://go.microsoft.com/fwlink/?LinkId=217627.
REM
REM Usage: DnsCmd
<ServerName> <Command> [<Command Parameters>]
REM
REM
<ServerName>:
REM IP address or host
name? -- remote or local DNS server
REM? ?. ?--
DNS server on local machine
REM <Command>:
REM /Info? -- Get
server information
REM /Config? -- Reset
server or zone configuration
REM /EnumZones --
Enumerate zones
REM /Statistics? --
Query/clear server statistics data
REM /ClearCache? --
Clear DNS server cache
REM /WriteBackFiles?
-- Write back all zone or root-hint datafile(s)
REM /StartScavenging
-- Initiates server scavenging
REM /IpValidate? --
Validate remote DNS servers
REM /EnumKSPs? --
Enumerate available key storage providers
REM
/ResetListenAddresses? -- Set server IP address(es) to serve DNS requests
REM /ResetForwarders
-- Set DNS servers to forward recursive queries to
REM /ZoneInfo? -- View
zone information
REM /ZoneAdd -- Create
a new zone on the DNS server
REM /ZoneDelete? --
Delete a zone from DNS server or DS
REM /ZonePause --
Pause a zone
REM /ZoneResume? --
Resume a zone
REM /ZoneReload? --
Reload zone from its database (file or DS)
REM /ZoneWriteBack --
Write back zone to file
REM /ZoneRefresh --
Force refresh of secondary zone from master
REM /ZoneUpdateFromDs?
-- Update a DS integrated zone by data from DS
REM /ZonePrint --
Display all records in the zone
REM /ZoneResetType --
Change zone type
REM
/ZoneResetSecondaries? -- Reset secondary\notify information for a zone
REM
/ZoneResetScavengeServers? -- Reset scavenging servers for a zone
REM /ZoneResetMasters?? ?-- Reset secondary zone's master servers
REM /ZoneExport? --
Export a zone to file
REM
/ZoneChangeDirectoryPartition -- Move a zone to another directory partition
REM
/ZoneSeizeKeymasterRole? -- Seize the key master role for a zone
REM
/ZoneTransferKeymasterRole -- Transfer the key master role for a zone
REM /ZoneEnumSKDs? --
Enumerate the signing key descriptors for a zone
REM /ZoneAddSKD? --
Create a new signing key descriptor for a zone
REM /ZoneDeleteSKD --
Delete a signing key descriptor for a zone
REM /ZoneModifySKD --
Modify a signing key descriptor for a zone
REM
/ZoneValidateSigningParameters -- Validate DNSSEC online signing parameters for
a zone
REM /ZoneSetSKDState
-- Set Active and/or Standby keys for a signing key descriptor for a zone
REM /ZoneGetSKDState
-- Retrieve dynamic state for a signing key descriptor for a zone
REM
/ZonePerformKeyRollover? -- Trigger a key rollover in a signing key descriptor
for a zone
REM
/ZonePokeKeyRollover -- Trigger a key rollover in a signing key descriptor for
a zone
REM /ZoneSign? --
Signs the zone using DNSSEC online signing parameters
REM /ZoneUnsign? --
Removes DNSSEC signatures from a signed zone
REM /ZoneResign? --
Regenerate DNSSEC signatures in a signed zone
REM /EnumRecords --
Enumerate records at a name
REM /RecordAdd --
Create a record in zone or RootHints
REM /RecordDelete? --
Delete a record from zone, RootHints or cache
REM /NodeDelete? --
Delete all records at a name
REM /AgeAllRecords --
Force aging on node(s) in zone
REM /TrustAnchorAdd?
-- Create a new trust anchor zone on the DNS server
REM /TrustAnchorDelete
-- Delete a trust anchor zone from DNS server or DS
REM /EnumTrustAnchors?
-- Display status information for trust anchors
REM
/TrustAnchorsResetType -- Change zone type for a trust anchor zone
REM
/EnumDirectoryPartitions -- Enumerate directory partitions
REM
/DirectoryPartitionInfo? -- Get info on a directory partition
REM /CreateDirectoryPartition?
-- Create a directory partition
REM
/DeleteDirectoryPartition? -- Delete a directory partition
REM
/EnlistDirectoryPartition? -- Add DNS server to partition replication scope
REM
/UnenlistDirectoryPartition -- Remove DNS server from replication scope
REM
/CreateBuiltinDirectoryPartitions -- Create built-in partitions
REM /ExportSettings?
-- Output settings to DnsSettings.txt in the DNS server database directory
REM /OfflineSign --
Offline signing zone files, including key generation/deletion
REM /EnumTrustPoints
-- Display active refresh information for all trust points
REM
/ActiveRefreshAllTrustPoints -- Perform an active refresh on all trust points
now
REM
/RetrieveRootTrustAnchors? -- Retrieve root trust anchors via HTTPS
REM
REM <Command
Parameters>:
REM DnsCmd
<CommandName> /? -- For help info on specific Command
REM
REM In future versions
of Windows, Microsoft might remove dnscmd.exe.
REM
REM If you currently
use dnscmd.exe to configure and manage the DNS server,
REM Microsoft
recommends that you transition to Windows PowerShell.
REM
REM To view a list of
commands for DNS server management, type
REM "Get-Command
-Module DnsServer" at the Windows PowerShell prompt. Additional
REM information about
Windows PowerShell commands for DNS is available at
REM
http://go.microsoft.com/fwlink/?LinkId=217627.
REM
How
to Get Your? App? to
Assume
the Privileges of an Administrator
Some
computer programs need to run privileged in order to perform their function.? The problem is how to avoid requiring the end
user to launch the program with the privileges of the Administrator.? Enter received standard wisdom.? Here?s what you do.? Simply notice that the program is not running
as Administrator.? Then, figure out what
program is being executed and relaunch it to run as Administrator.? The original, unprivileged instance then
quietly exits.
When
yours is a simple console application, you don?t have access to the
System.Windows.Forms.Application.ExecutablePath() method.? Said method returns the filename of the
application?s launchable image.? So other
means must be found.? Also, unlike in a
Windows forms application, you must cater to command line arguments.? These launch-time inputs are provided via a
GUI when you have a window.? The
CodeBase() method returns a URL-style reference to the launchable image.? So you must tear off the Error! Hyperlink reference not valid.
prefix.? For good measure, the Unix-style
forward slashes in the URL are changed to Microsoft?s patented backslashes.
It
is interesting to note that all your carefully arranged drive letter equations
to network folders vanish when you relaunch the application.? Apparently by design, drive letter equations
are tied to the user account probably in the profile.? Different account means different profile.? You can establish the same equations under
the privileged account as you originally established.? Or use the Universal Naming Convention (UNC)
which should work in most cases. I can?t say I recall being given advice about
this Windows behavior.? Have to figure it
out on our own.
How
to Read and Write a Flat File
A
flat file is what database aficionados call a sequential series of similarly-sized
records.? In the old days, these records
might be called? card images. That?s back
when punch cards of 80 columns were the common input medium. Practically a
stone age technique.? Anyway, flat files
are still handy and are the place you put your XML, XAML,C# source code, and
logs.? The way you write a flat file is
as follows.
using
(System.IO.StreamWriter sw = new
System.IO.StreamWriter(@?\Users\Public\NameOfFile.txt?))
{
sw.WriteLine(?Line 1. );
sw.WriteLine(?Line 2. );
sw.WriteLine(?Line 3. );
}
With
the using statement you define a set
of statements that enjoy the benefits of an open flat file stream.? These are those statements between the curly
braces that follow the using
statement.? The using statement itself declares a StreamWriter object reference
variable, sw, and initializes it with a newly manufactured object of that class.? The constructor takes the name of the flat
file as its argument.? Inside the curly
braces you write individual records with the WriteLine method of the
StreamWriter object.? Upon exiting the
curly braces, the file that StreamWriter opened is automatically closed.? To read those records back, follow this
pattern:
using
(System.IO.StreamReader sr = new System.IO.StreamReader(@?\Users\Public\NameOfFile.txt?))
{
for(;;)
{
string line = sr.ReadLine();
if (line == null)
break;
lineProcessingMethod(line);
}
}
Inside
the curly braces you read individual records and process them.? You continue reading records with the
ReadLine method of StreamReader object until the method returns null.? That?s your signal that every record has been
returned and you are done reading.? Call
break to exit the loop.? Upon exiting the
curly braces, the file that StreamReader opened is automatically closed.
How
to Discover Whether a File is In Use by a Different Process
It
is highly convenient to know before you touch a file when the file is currently
being handled in a different process.? You
want to avoid file conflicts.? So, how do
you ask the question and get a reasonable answer:? is this file in use Solution:? Available to people who write unmanaged code.? Here we are using the OpenFile method that is
provided by Win32.? We demand exclusive
use of the file.? When the request is
rejected (signaled by a return code that is symbolically represented by
HFILE_ERROR), it becomes obvious that exclusive use is not presently available.? Why might that be Well, it could be that the
file is open in a different process.? So,
assume that.? There doesn?t seem to be an
equivalent mechanism that is provided in the .Net Framework.? So the next best thing is interoperability in
which managed code calls into unmanaged code.?
See the section titled:? Interoperability:? Hooking Managed Code to Unmanaged Code.
Read
a File to Bits
Sometimes
it is beneficial to acquire the bits that are the content of a file rather than
rely on more advanced but obscurantist mechanisms that hide the true content
and structure of any file.? In this
example it is shown how to open a file for reading the bits in the order in
which they appear and, for fun, converting those bits to a text stream that
encodes the bits with characters taken from the set all uppercase letters, all
lowercase letters, the digits, and two special characters.? Each character stands for a specific pattern
of six bits.? There are 64 different
characters standing for the 64 different bit patterns that are physically
possible in six bits.
How
to Synchronize PC?s Clock with External Time Server
Where the red rectangle appears
you put a symbolic reference to an Internet time server (Network Time Protocol
or NTP), e.g. time.windows.com.? This command must be called from an elevated command
prompt.? That is to say, you must launch
CMD so that it runs as Administrator.? It
is advisable to stop and restart the Windows Time service following the
successful execution of this command, as follows.? You should be sure to perform this procedure
on each Domain Controller.? Workstations
that are joined to the domain automatically take as their time source the most
convenient Domain Controller in their domain.?
You should run this procedure (referencing an Internet time server) only
on Domain Controllers to save the ecology.?
There is no need for every workstation to query the Internet time server
when the Domain Controller is perfectly capable of acting as an accurate time
source and go-between.? Workstations can
run the command by placing the fully-qualified name of the Domain Controller in
the red box. A good choice for Internet time server is pool.ntp.org.
NET STOP W32Time
NET START W32Time
PowerShell can be used to set
the time source on a Domain Controller, as follows with this script:
w32tm /config
/manualpeerlist:pool.ntp.org /syncfromflags:MANUAL
Stop-Service
w32time
Start-Service
w32time
Change a File?s Time-of-Last-Reference To Now
To assure a
specific file is backed up during your next computer hygiene session you can use
the touch utility to mark it as having been changed.? Syntax:?
touch <filename>.? If the file exists then the first byte is
read and written.? When the file length
is zero then the file is opened truncated for writing and nothing is written to
it.? When the file does not exist then it
is created empty. [touch]
How to Install a Windows Service (aka Daemon)
1. Start an elevated
command prompt.? Suppose you have a
shortcut to CMD on your desktop.? Right
click it and choose Run as Administrator.
2.
Make your current working directory the place where you keep the
installation script.? I call mine
Install.cmd.? I put it in the Release
folder of the VS solution.
3.
Launch the script.
4.
Microsoft provides a utility program whose name is InstallUtil.? You first remove from the system any previous
copy of the service.
5.
Step 4 stops the service process and deletes the service from the
Registry.
6.
Step 4 causes InstallUtil to report success in removing the service.? However, the process continues on and on.?
7.
Because of Step 6, we make special arrangements to delay further
processing until the process actually disappears.
8.
The touch command creates a temporary file that is necessary because
the text editor assumes one exists.
9.
The text editor is invoked to run a text editor script that waits for
the service to disappear.
10.
The erase command gets rid of the temporary file of Step 8.
11.
Now we create a folder (aka directory) in which to copy the service
executable file.
12.
The old executable, if any, is deleted.
13.
All associated dynamic link library files, if any, are deleted.
14.
The new executable is copied to the directory of Step 11.
15.
InstallUtil is invoked to register the service with Windows.
16.
NET START is invoked to get the service going.
NET STOP
WINSVCFILCPY
InstallUtil
-uninstall WINSVCFILCPY.exe
REM Give Windows
a chance to finish uninstalling
REM Windows
should not return from uninstalling until uninstalling the service has
completed
touch G3u6aX
ed? G3u6aX
WAITFORTERM.TXT
erase G3u6aX
PAUSE
MKDIR
C:\TkKcV6QJm3dP2nU4ps85